编译和运行
驱动编译要用到kernel的Makefile文件 — — 也就是源码树的编译系统。因此,源码需要被配置和编译,以ubuntu自带的源码为例:

编译外部模块(.ko)的编译命令是:
make -C M= mak*e−*C< pathtokernelsrc> M=PWD
也就是进入到kernel目录,利用kbuild系统来编译驱动文件。obj-m 告诉编译系统需要编译成一个module(.ko),foo.o表明需要源文件是foo.c或者foo.S,如果驱动模块包含多个文件(如: foo_main.c, foo_common.c),写法如下:

kbuild将编译$(foo-y)列出的所有文件,合并产生 foo.ko
在编译期间,模块的Makefile会被kbuild多次读取,因此建议使用$(KERNELRELEASE)来区分Makefile的使用阶段,优化后的Makefile如下:

第一次运行make的

本文详细介绍了Linux设备驱动开发,包括编译和运行驱动的方法,字符设备和块设备的驱动实现。字符设备主要关注文件操作,如open/write/read/close系列函数,而块设备涉及注册、初始化请求队列和处理设备请求。文章通过实例讲解了驱动的编写和测试过程,对于理解Linux设备驱动的开发具有指导意义。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



