第九章 硬件抽象层 HAL
HAL是建立在Linux驱动之上的一套程序库。这套程序库并不属于Liunx内核,而是属于Linux内核层之上的应用层。
Android HAL架构
最初架构
新的Android HAL架构
编写支持HAL的Linux驱动程序的步骤
第一步:编写Linux驱动
第二步:编写HAL Library
第三步:编写Service Library
为LED增加HAL
1.编写一款支持 HAL 的 Linux 驱动程序的步骤
第 1 步:编写 Linux 驱动
第 2 步:编写 HAL Library
第 3 步:编写 Service Library
2.颠覆 Linux 驱动的设计理念: 精简 LED 驱动
在第7 章实现的 LED 驱动的基础进程修改,去掉所有与读写寄存器规则相关的代码,只保留了创建设备文件及与寄存器交互的代码。
3.测试读写寄存器操作
在编写 Linux 驱动以及与驱动相关的程序的过程中应分段测试每一部分程序。
4.编写调用LED驱动的HAL模块
编写 HAL模块的步骤和原理:
第1步:定义结构体和宏
第2步:编写 HAL模块的 open 函数
第3步:定义 hw_module_methods_ t 结构体变量
第4步: 定义 HAL_MODULE_INFO_SYM 变量
第5步:编写 HAL模块的 close 函数
第 6步:编写控制 LED 的函数
5.编写调用 HAL 模缺的 Service
6.HAL模块的存放路径和命名规则
7.编写调用 Service 的 Java 库
8.测试 LED 驱动