HAL是建立在Linux驱动之上的一套程序库,这套程序库并不属于Linux内核,而属于linux内核层之上的应用层。
在本章中还介绍了为什么要在Android中加入HAL,统一硬件的调用接口,由于HAL有标准的调用接口,所以可以利用HAL屏蔽Linux驱动复杂、不统一的接口;解决了GPL版权问题。这样这些敏感的代码就摆脱了GPL协议的束缚,那些不想开源的Linux驱动作者也就没必要开源了;针对一些特殊的要求。
还介绍了Android HAL架构,为LED驱动增加HAL,编写一款支持HAL的Linux驱动程序的步骤:1.编写Linux驱动;2.编写HAL Library;3.编写Service Library 尽管这些并不是必需的,但新的HAL架构要求这样做,Service Library也是Linux Library这一步比较灵活。
测试读写寄存器操作,在编写Linux驱动以及驱动相关的程序过程中应分段测试每一部分程序。在本小节中将编写一个由于测试上一节实现的LED驱动的程序,由于LED驱动程序的设备文件写入字节形成的数据。或从设备文件中读取字节类型的数据。为了通用。本节实现的测试测试程序通过命令行参数来传递设备文件名、字节数和要传递的字节等信息。
Android在启动时会自动装载这些属性文件。如果在多个属性文件中都定义了同一个Key和Value,那么只用第一个Key被获取。
编写调用Service的Java库,为了是程序更易于使用,可以将调用Service程序库的Java类单独封装在jar文件中,这样做任何的Android应用程序中只要引用了这个jar文件就可以向调用普通Java类一样访问LED驱动了。