HAL硬件抽象层是创建在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层上的应用层。在传统的Linux系统中Linux驱动通常有两种类型的代码。Google为Android加入HAL主要有如下目的:统一硬件的调用接口。因为HAL有标准的调用接口,因此能够利用HAL屏蔽了Linux驱动复杂、不统一的接口;解决了GPL协议;针对一些特殊的要求。对于一些硬件,可能须要访问一些用户空间的资源,或在内核空间不方便完成的工做以及特殊需求。在这种状况下,能够利用位于空间的HAL代码来辅助Linux完成一些工做。函数
本章实现的LED驱动包含了Linux驱动、HAL模块、Service程序库、NDK程序和Java程序。接口
编写HAL模块的步骤和原理以下:资源
支持HAL的Linux驱动程序步骤以下: 变量
1.编写Linux驱动;module
2.编写HAL Library;原理
3.编写Service Library;硬件
HAL模块本质上就是经过Linux共享库(.so)与Linux驱动交互,而后应用程序再访问Linux共享库与Linux驱动交互,而后应用程序再访问Linux共享库。每个HAL共享库指定一个ID,再利用这个ID配合必定的规则找到Linux共享库。 程序