读书笔记(九)

 HAL:硬件抽象层

      HAL ( Hardware Abstraction Layer,硬件抽象腔,是建立在Linux驱动之上的一套翻字库。这套程序 j率并不属于 Linux 内核, 而是属于 Linux 内核层之上的应用层。 在传统的 Linux.系统中Linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑有 码。对于访问硬件寄存器的代码,并没有什么秘密可言,因为这都是调用的 Linux 内核的标准函数〈如 io位ad32)进行的标准操作 而Linux驱动的业务逻辑部分对击有些企业或个人并不想将源代码公开。尽管这些Lipux.驱动都是免费给用户’使用的,由于这些Linux 驱动的实现涉及一些 技术专利或商业秘窑,如果公开源代码会有很大麻烦。但作为Linux.驱动,又不得不公开源代码。这是由于Linux 内核采用了 GPL协议(详见6J.3.节的介绍),而GPL协议要求所有使用基于GPL协议的源代码的程序必须开源由于 Linux 驱动属于 Linux 内核的一部分,因此Linux 驱动必须开源。 

    编写 HAL模块的步骤和原理如下。 第1步:定义结构体和宏。

                                                第 2 步编写 HAL模块的open 函数。

                                                第3 步:定义 hw_module_methods_ t 结构体变量。

                       第4 步: 定义 HAL_MODULE_INFO_SYM 变量。

                      第5步:编写 HAL模块的 close 函数。

                  第 6步z 编写控制 LED 的函数。

在安卓系统中使用 Linux驱动有两种方式,一种是通过传统的方式直接与Linux驱动交互。例如, 直接读写设备文件的数据,另外一种是 Android特有的,就是通过 HAL模块。

http://home.cnblogs.com/u/lkm-6398/

原文地址:https://www.cnblogs.com/lkm-6398/p/5638305.html