第六章
第6章 第一个Linux驱动程序: 统计单词个数
一、编写Linux驱动程序的步骤
第1步:建立Linux驱动骨架
用 modu te_init和 moduie_exit去指定
第2步:注册和注销设备文件
misc_register 创建设备文件
misc_deregister 移除设备文件
第3步:指定与驱动相关的信息
通过MODULE_AUTHOP、MODULE_LICENSE、MODULE_ALIAS、MODULE_DESCRIPTION等宏指定与驱动相关的信息。
第4步:指定回调函数
Linux系统调用相应驱动程序的回调函数。
第5步:编写业务逻辑
这一步是 Linux 驱动的核心部分。
第6步:编写Makefile文件
Linux内核源代码的编译规则是通过Makefile文件定义的。
第7步:编译Linux驱动程序
Linux 驱动程序,可以直接编进内核,也可以作为模块单独编译。
第8步:安装和卸载Linux驱动
如果 Linux 驱动程序以模块单独存在, 需要使用 ins mod 或 modprobe 命令装载 Linux 驱动模块,使用 rmmod 命令卸载 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
第六步:实现统计单词数的算法
节实现的算法将由空格、制表符 (ASCII: 9)、回东符(ASC日: IJ)和换行符(ASCII: 10)分隔的字符串算做一个单词,该算法 同时考虑了有多个分隔符(空格符、制表:符、回车符和换行符)
第七步:编译、安装、卸载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 模拟器上通过原生( Native ) 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工程
第五步:运行测试程序
统计单词数的 word_count 驱动是本章实现的第一个完整的 Linux 驱动,。本章不仅仅是介绍一个示例,还介绍了如何使用不同的方法测试 Linux 驱动。这些方法主 要以平台来区分。