读《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