Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / 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