HAL是创建在Linux驱动上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。Google为Android增长HAL的主要目的除了尽可能避免应用程序直接访问Linux驱动外,还有一个重要缘由,那就是保护“私人财产”。函数
Google为Abdroid加入HAL主要有以下目的:spa
统一硬件的调试接口。调试
解决了GPL版权问题。blog
针对一些特殊要求。接口
编写一款支持HAL的Linux驱动程序的步骤博客
第一步:编写Linux驱动变量
第二步:编写HAL Libraymodule
第三步:编写 Server Libary原理
编写HAL模块的步骤和原理硬件
第一步:定义结构体和宏
描述HAL模块的hw_module_t结构体
描述HAL设备的hw_device_t结构体
描述模块入口函数的hw_module_methods_t结构体
第二步:编写HAL模块的open函数
初始化hw_device_t的子结构体
打开设备文件
初始化寄存器
第三步:定义hw_module_methods_t结构体变量
第四步:定义HAL_MODULE_INFO_SYM变量
第五步:编写HAL模块的close函数
第六步:编写控制LED的函数
心得:在Android系统中使用Linux驱动有两种方式。一种是经过传统的方式直接与Linux驱动交互。另一种是Android特有的,就是经过HAL模块。HAL模块本质上就是经过Linux共享库与Linux驱动交互,而后应用程序再访问Linux共享库。
本人博客地址:http://home.cnblogs.com/u/jie617530/