读“硬件抽象层:HAL”的心得

1 HAL是建立在Linux驱动上的一套程序库,并不属于Linux内核,而是属于Linux内核层上的应用层。它的目的就是保护“私人财产”,避免应用程序直接访问Linux驱动。

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

3 HAL模块本质上就是通过Linux共享库(.so)与Linux驱动交互,然后应用程序再访问Linux共享库。

4每一个HAL共享库指定一个ID,通过ID来定位相应的.so文件(在这里叫做Stub)。Google也建议使用Stub的方式编写HAL模块。

5编写HAL模块的步骤和原理:

(1)定义结构体和宏

(2)编写HAL模块的open函数

(3)定义hw_module_methods_t结构体变量

(4)定义HAL_MODULE_INFO_SYM变量

(5)编写HAL模块的close函数

(6)编写控制LED的函数

6Android系统的属性文件共有4个: /default.prop;/system/build.prop;/system/default.prop;/data/local.propAndroid在启动时会自动装载这些属性文件。

 

 

posted @ 2016-06-24 08:48  bbbox  阅读(160)  评论(0编辑  收藏  举报