Android深度探索笔记-第九章

HAL层属于Linux内核层之上的应用层是为了尽量避免应用程序直接访问Linux驱动和保护 “私人财产”。带HAL的 Linux 驱动就相当于将数据从HAL传到寄存器,或从寄存器传到HAL的数据二传。

加入HAL的主要目的:1:统一硬件的调用接口,2:解决了GPl版权问题,3:针对一些特殊的要求。

Android HAL的源代码存储的位置并不固定,一般会存储在Android源代码目录/hardware目录中。

编写一款支持HA 的Linux驱动程序的步骤:1:编写 Linux 驱动;2:编写 HAL Library,这类库文件有一个接口。通过HAL_MODULE_INFO_ SYM变量实现;3:编写 Service Library;

如果启动了多个android虚拟机或连接了多个Android设备。build.sh脚本文件会检测到这些设备,并将它们列出来供用户选择。

在编写 Linux 驱动以及与驱动相关的程序的过程中应分段测试每一部分程序。

HAL模块拥有一个固定名称的结构体变量HAL_MODULE_INFO_SYM。HAL模块由leds hal.c 和leds .hal.h组成。leds_hal.h头文件用于定义结构体,宏和引用一些系统的头文件。

编写 HAL 模块的步骤和原理如下:1:定义结构体和宏;2:编写 HAL 模块的 open 函数;3:定义 hw_module_methods_ t 结构体变量;4:定义 HAL_MODULE_INFO_SYM 变量;5:编写 HAL 模块的 close 函数;6:编写控制 LED 的函数;

原文地址:https://www.cnblogs.com/bbly02/p/5653832.html