第九章 硬件抽象层 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 驱动

原文地址:https://www.cnblogs.com/hello3399/p/5652405.html