Android深度探索(卷1)HAL与驱动开发
第六章 第一个Linux驱动程序:统计单词个数
统计单词个数的功能是封装在Linux驱动中的。
Linux驱动的工作和访问方式是Linux亮点之一,同时受到了业界大防范好评。Linux系统将每一个驱动都映射成一个文件。这些文件称为设备文件或者驱动文件,都保存在 /dev 目录中。这种设计理念使得与Linux驱动进行交互就像与普通文件进行交互一样容易。当然,也比访问Linux API 更容易。由于大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与文件交换数据。
编写Linux驱动程序的步骤
1、建立Linux驱动骨架(装载和卸载Linux驱动)
Linux内核在使用驱动时首先需要进行装载驱动。在装载过程中需要进行一些初始化操作。当系统退出时需要进行卸载Linux驱动,在卸载过程中需要释放由Linux驱动占用的资源。在Linux驱动程序中需要提供两个函数来分别处理驱动初始化和退出的工作。这两个函数分别用module和moddule_exit宏指定。
2、注册和注销设备文件
3、指定与驱动相关的信息
4、指定回调函数
5、编写业务逻辑
6、编写Makefile文件
Linux内核源代码的编译规则是通过Makefile文件定义的。因此编写一个新的Linux驱动程序必须有一个Makefile文件
7、编译Linux驱动程序
8、安装和卸载Linux驱动
第一个Linux驱动:统计单词个数
1、#mkdir建立目录文件夹
2、编写Makefile文件
Obj-m : = vord count.o
Word_count-y : = process.o data.o
编写Linux驱动程序的骨架(初始化和退出驱动)
指定与驱动相关的信息
指定回调函数
实现统计单词数的算法
编写word_count驱动程序:
1、get_word_count 函数将mem数组中的第一个为“\0”的字符作为字符串的结尾符,因此在word_count_write 函数中将mem[count]的值设成“\0”,否则get_word_count 函数无法知道要统计单词书的字符串到哪里结束。
2、单词数使用int类型变量存储,在word_count_write函数中统计出单词数(word_count变量的值),在word_count_read 函数中将word_count 整型变量值分解成4个字符存储在buf中,因此,在应用程序中需要将这四个字节组合成Int类型的值
编译、安装、卸载Linux驱动程序
使用多种方式测试Linux驱动
使用Exlipse开发和测试Linux驱动程序
统计单词数的word_count驱动是本书实现的第一个完整的Linux驱动。