首页 / 操作系统 / Linux / Linux上第一个驱动程序:hello
写过一篇文章是在ARM11上完成的LED的驱动和应用程序,现在换了平台,在am335x上。相比之前是在内核里面修改Kconfig和Makefile文件,然后编译模块或者.ko文件,这次直接编写Makefile,然后指定内核目录和编译器即可编译获得.ko文件,以后的驱动开发都可以参考此Makefile部分,故编写此文档,以备他日参考之用。参考代码:#include linux/kernel.h#include linux/module.hstatic int __init ARM_Hello_Init(void){ printk("Hello, Hello module is installed !
"); return 0;}static void __exit ARM_Hello_Exit(void){ printk("Good-bye, Hello module was removed!
");}module_init(ARM_Hello_Init);module_exit(ARM_Hello_Exit);MODULE_LICENSE("GPL"); 参考Makefile#ifneq ($(KERNELRELEASE),) obj-m:=hello-dev.o #else #generate the pathCURRENT_PATH:=$(shell pwd)export ARCH = armexport CROSS_COMPILE = arm-none-linux-gnueabi-CC :=$(CROSS_COMPILE)gccLD :=$(CROSS_COMPILE)ld #the absolute path#LINUX_KERNEL_PATH:=/lib/modules/$(shell uname -r)/buildLINUX_KERNEL_PATH=/opt/ti-sdk-am335x-evm-08/board-support/linux-3.14.26-g2489c02 .PHONY: clean distclean #complie objectdefault: make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules clean: rm -rf *.o *.mod.c *.mod.o *.order *.symvers distclean: rm -rf *.o *.mod.c *.mod.o *.order *.symvers *.ko #endif编译结果生成:hello.ko查看结果信息:$ modinfo hello.kofilename: /mnt/share/example/hello-dev/hello-dev.kolicense: GPLsrcversion: 831720228EB3107175F1056depends: vermagic: 3.14.26-g07d13c6-dirty mod_unload modversions ARMv7 p2v8放到ARM平台加载、卸载:$Insmod hello.koHello, DeepFish Hello module is installed !$rmmod hello.koGood-bye,DeepFish Hello module was removed!大功告成!还可参考另一份日志:Linux上第一个驱动+应用程序:LED灯闪烁 http://www.linuxidc.com/Linux/2016-03/129598.htm本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-03/129597.htm