第一节、Linux第一个驱动Helloworld
本节用于书写我们的在Linux上的第一个驱动Helloworld
驱动分为四个部分:
- 头文件
- 驱动模块的入口和出口
- 声明信息
- 功能实现
第一步,包含头文件
1 |
第二步,驱动模块的入口和出口
1 | module_init(); |
第三步,声明模块拥有开源许可证
1 | MODULE_LICENSE("GPL") |
第四步,功能实现
1 | static int hello_init(void) //函数返回类型是int |
注意:内核打印函数不能用printf,因为内核没有办法使用C语言库。
第一步,将模块编译成内核模块的Makefile
1 | obj-m += helloworld.o |
第二步,编译驱动
编译驱动之前注意的问题:
- 内核源码一定要先编译通过
- 编译驱动模块用的内核源码一定要和实际使用的镜像是同一套的
- 设置好开发环境,export ARCH和CROSS_COMPILE
加载模块驱动:insmod
查看模块加载列表:lsmod
卸载模块驱动:rmmod