读《Android深度探索(卷1)HAL与驱动开发》的一些思考06

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读《Android深度探索(卷1)HAL与驱动开发》的一些思考06相关的知识,希望对你有一定的参考价值。

统计单词数的word_count 驱动是本书实现的第一个完整的Linux 驱动。本章不仅是介绍一个示例,还介绍了如何使用不同的方法测试Linux 驱动。

编写Linux驱动程序步骤:

1:建立Linu x 驱动骨架(装载和卸载Linu x 驱动)

2:注册和注销设备文件

3:指定与驱动相关的信息

4:指定回调函数

5:编写业务逻辑

6:编写Makefile文件

7:编译Linux 驱动程序

8:安装和卸载Linux驱动程序

源程序目录:<光盘根目录>/sources/word_count

1.主要原理:利用设备文件作为介质与应用程序进行交互。应用程序通过向设备文件传递一个自空格分隔的字符串(每一个被空格隔开的子字符串称为,然后从设备文件读出来的是该字符串包含的单词数。本例的驱动程序使用C语言实现,源代码文件路径如下。

随书光盘: <光盘根目录>/sources/ch06/word count/word count.c

虚拟环境:/root/drivers/ch06/word count/word count.c

2.准备工作:首先使用下面的命令建立存放Linux 驱动程序的目录。

# mkdir -p /root/drivers/ch06/word _count

#cd /root/drivers/ch06/word count

然后,使用下面的命令建立驱动源代码文件(word count.c)

    #echo  ‘’> word_count . C

最后编写一个Makefile 文件

#echo ‘obj-m :=word_count . o’ > Makefile

3.编写Linux 驱动程序的骨架(初始化和退出驱动):骨架部分主要是Linux驱动的初始化和退出函数。

 

一个完整的Linux驱动程序都会指定这些与驱动相关的信息。一般需要如下信息:

模块作者:使用MODULE AUTHOR 宏指

模块描述:使用MODULE

模块别名:使用MODULE ALIAS 宏指定。

开源协议:使用MODULE_LICENSE 宏指定。

除了这些信息外, Linux驱动模块自己还会包含一些信息。我们可以用下面的命令查看word_count.ko的信息。

#modinfo word_count.ko

4.注册和注销设备文件:一般需要在初始化Linux驱动时建立设备文件,在卸载linux驱动时删除设备文件。而且设备文件还需要一个结构体(miscdevice)来描述与其相关的信息。

5.指定回调函数:最常用的交互方式就是读写设备文件。通过file_operations.read 和file_operations. write 成员变量可以分别指定读写设备文件要调用的回调函数指针。用word count read 和l word count write函数做一个读写设备文件数据的实验。

6.实现统计单词数的算法:。本节实现的算法将由空格、制表符、回东符和换行符分隔的字符串算做一个单词,该算法同时考虑了有多个分隔符(空格符、制表:符、回车符和换行符)的情况。

7.编译、安装、卸载Linux 驱动程序。

以上是关于读《Android深度探索(卷1)HAL与驱动开发》的一些思考06的主要内容,如果未能解决你的问题,请参考以下文章

读《Android深度探索(卷1)HAL与驱动开发》的一些思考05

读《Android深度探索(卷1)HAL与驱动开发》的一些思考10

读《Android深度探索(卷1)HAL与驱动开发》的一些思考08

读《Android深度探索(卷1)HAL与驱动开发》的一些思考07

Android深度探索与HAL驱动开发(卷1)-- 第十章随笔

Android深度探索(卷1)HAL与驱动开发学习笔记