《Android深度探索卷一》读书笔记七
1.编写驱动程序
Linux系统将每一个驱动都映射成一个文件。这些文件称为设备文件或驱动文件,都保存在/dev目录中。大多数Linux驱动都有对应的设备文件,因此与Linux驱动交换数据成了与设备文件交换数据。
编写Linux驱动程序的步骤:
第 1 步:建立 Linux驱动骨架(装载和卸载 Linux 驱动)
在 Linux 驱动程序中需要提供两个函数来分别址理驱动初始化和退出的工作。 Linux 驱动程序一般都需要用module_init和 moduie_exit宏指定这两个函数,因此这两个函数及这两个宏的 C程序文件也可看作是 Linux驱动的骨架。
第 2 步:注册和注销设备文件
删除设备文件一般在第l步编写的处理Linux退出工作的函数中完成。可以分别使用 misc_register和misc_deregister函数创建和移除设备文件。
第 3 步:指定与驱动相关的信息
驱动程序是自描述的。通过 MODULE_AUTHOR、MODULE LICENSE、MODULE ALIAS 、MODULE DESCRIPTION等宏可以指定与驱动相关的信息。
第 4 步:指定回调函数
Linux驱动包含了多种动作,也可称为事件。一个驱动程序并不一定要指定所有的回调函数。回调函数会通过相关机制进行注册。
第 5 步:编写业务逻辑
这一步是Linux驱动的核心部分。任何一个完整的Linux驱动都会做一些与其功能相关的工作。
第 6 步:编写 Makefile文件
Linux内核源代码的编译规则是通过Makefile文件定义的,必须要有一个Makefile文件。
第 7 步:编译 Linux 驱动程序
Linux 驱动程序,可以直接编写进内核,也可以作为模块单独编译。
第 8 步:安装和卸载 Linux 驱动
Linux驱动编译进内核,只要Linux使用该内核,驱动程序就会自动装载。若Linux驱动程序以模块单独存在,需要使用insmod或modprobe命令装载Linux驱动模块,使用rmmod命令卸载Linux驱动模块。
2.测试
对于一个Linux驱动程序,可以在Ubuntu Linux上做前期开发和测试,对于访问硬件的部分也可以在Ubuntu Linux用软件进行模拟。当基本开发完成后,就需要在开发板或工程样机上使用真实的硬件进行测试,最后还需在最终销售的手机上进行测试。最终测试通过,Linux驱动才能算真正开发完成。在开发Linux驱动的过程中一个重要的步骤就是测试。
使用以平台来区分的不同方法测试Linux驱动。可以直接使用Ubuntu Linux 测试Linux驱动。有很多驱动只要Linux内核编译一遍,就可以直接安装在 Android、Linux等嵌入式系统中。也可以直接在 Android模拟器、开发板甚至手机上测试Linux驱动。为了更快地开发Linux驱动可采用 Eclipse集成开发环境。