通过第六章的学习,使自己对Linux驱动程序的理解更加深刻,通过一个简单的单词统计驱动程序,使自己学到了很多。
学到的知识:
一、编写Linux驱动程序的步骤
第1步:建立Linux驱动骨架
第2步:注册和注销设备文件
misc_register 创建设备文件
misc_deregister 移除设备文件
第3步:指定与驱动相关的信息
通过MODULE_AUTHOP、MODULE_LICENSE、MODULE_ALIAS、MODULE_DESCRIPTION等宏指定与驱动相关的信息。
第4步:指定回调函数
Linux系统调用相应驱动程序的回调函数。
第5步:编写业务逻辑
第6步:编写Makefile文件
Linux内核源代码的编译规则是通过Makefile文件定义的。
第7步:编译Linux驱动程序
第8步:安装和卸载Linux驱动
二、统计单词个数
第一步:编写Linux驱动程序前的准备工作
# mkdir -p /root/drivers/ch06/word_count
# cd /root/drovers/ch06/word_count
# echo ‘‘ >word_count.c
# echo ‘obj-m := word_count.o‘ > Makefile
第二步:编写Linux驱动程序的骨架
骨架部分主要是Linux驱动的初始化和退出函数。
第三步:指定与驱动相关的信息
模块作者:使用MODULE_AUTHOR宏指定。
模块描述:使用MODULE_DESCRIPTION宏指定。
模块别名:使用MODULE_ALIAS宏指定。
模块协议:使用MODULE_LICENSE宏指定。
协议包括:开源协议、GPL协议、LGPL协议、BSD协议、Apache Licence 2.0协议、MIT协议。
第四步:注册和注销设备文件
extern int misc_register(struct miscdevice *misc);
extern int misc_dergister(struct miscdevice *misc);
第五步:指定回调函数
添加word_count_read和word_count_write
第六步:实现统计单词数的算法
第七步:编译、安装、卸载Linux驱动程序
查看日志输出信息和驱动模块信息
# dmesg |tail -n 1
#modinfo word_count.ko
检测驱动模块的依赖关系
# dempod /root/drivers/ch06/word_count/word_count.ko
装载Linux驱动
# modprobe word_count
三、使用多种方法测试Linux驱动
1、使用Ubuntu Linux测试Linux驱动
2、在Android模拟器上通过原生C程序测试Linux驱动
3、使用Android NDK测试Linux驱动
4、使用Java代码直接操作设备文件来测试Linux驱动
5、使用S3C6410开发板测试Linux驱动
6、将驱动编译进Linux内核进行驱动
四、使用Eclipse开发和测试Linux驱动程序
1、在Eclipse中开发Linux驱动程序
第一步:建立C工程
第二步:建立C源代码文件链接
第三步:设置include路径
第四步:编译Linux驱动
2、在Eclipse中测试Linux驱动
第一步:导入test_word_count.c文件
第二步:设置include路径
第三步:建立Target
第四步:Build工程
第五步:运行测试程序