本章是一个具体的例子,来详细的介绍开发和测试Linux驱动程序的完整过程。尤其是测试Linux驱动。在这个统计单词个数的实例中,重点是该算法的实现技术:即Linux驱动,而不是如何统计的。
6.1Linux驱到底是什么
Linux驱动的工作方式和访问方式是Linux的特点之一。Linux系统将每一个驱动都映射成一个文件,这些文件被称为驱动文件或设备文件,保存在dev目录中。由于大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与设备文件交换数据。事实上,编写Linux驱动程序还需要更高级的功能,如向打印机驱动写入数据时,打印机驱动需要接受这些被写入的数据,病通过并口或者USB等串口发送给打印机。要实现这一过程就需要Linux驱动可以响应应用程序传递过来的数据。就是Linux驱动的事件,就是回调函数。
6.2编写Linux驱动程序的步骤
Linux驱动程序与其他类型的Linux程序一样,也有自己的规则。
- 建立Linux驱动骨架(装载和卸载Linux驱动)
任何类型都有一个基本的结构,如C语言就需要一个入口函数main。Linux内核在使用驱动时首先需要装载驱动,在装载的过程中需要进行一些初始化工作如建立设备文件和分配内存地址空间等。当Linux系统需要退出时需要卸载Linux驱动,要释放Linux驱动占用的资源如删除设备文件,释放内存地址空间等。则在Linux驱动中需要2个函数来分别处理驱动初始化和退出的工作。分别是module_init和module_exit
- 注册和注销设备文件
任何一个Linux驱动都需要有一个设备文件,否则应用程序将无法与驱动程序交互。
- 指定与驱动相关的信息
驱动程序是自描述的。
- 指定回调函数
Linux驱动包含的多种动作也可称为事件。回调函数通过相关机制进行注册。
- 编写业务逻辑
- 编写Makefile文件
- 编译Linux驱动程序
- 安装和卸载Linux驱动
以上前5步是关于如何编写Linux驱动程序的 后三步可以使Linux驱动正常工作。
6.3第一个Linux驱动:统计单词个数
1.首先建立存放Linux驱动程序的目录,然后建立源代码文件。最后编写一个makefile文件
2.编写Linux驱动程序的骨架
安装Linux驱动:insmod word_count.ko
查看word_count是否安装成功: lsmod | grep word_count
卸载Linux驱动:rmmod word_count
查看由Linux驱动输出的日志信息:dmesg | grep word_count | tail –n 2
3.指定与驱动相关的信息
4.注册和注销设备文件
5.指定回调函数
6.实现算法
7.编译、安装,卸载Linux驱动程序
本章还介绍了许多种测试Linux驱动。
软件1308班31号 张帆 博客园地址: http://home.cnblogs.com/u/sxauzzz/