这一章主要讲的是硬件抽象层:HAL
HAL ( Hardware Abstraction Layer,硬件抽象层 )是建立在Linux 驱动之上的一套程序库。这套程序库并不属于Linux 内核, 而是属于Linux 内核层之上的应用层。
Google为android加入hal主要目的如下:
1、统一硬件的调用接口。
2、解决了gpl版权问题。
3、针对一些特殊的要求。
在Android.系统中使用Linux 驱动有两种方式。一种就是通过传统的方式直接与Lmux 驱动交互。另外一种是Android特有的,就是通过HAL 模块。HAL 模块本质上就是通过Linux 共享库(.so)与Linux驱动交互,然后应用程序再访问Linux共享库。
HAL是建立在Linux驱动之上的一套程序库,这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。Google为Android加入HAL主要有如下的目的:统一硬件的调用接口、解决了GPL版权问题。加入HAL的驱动使应用程序不需要再关心Linux驱动和设备文件的交互方式,而只需要像访问普通API一样就可以和Linux驱动进行交互。
编写hal模块的步骤与原理:
1、定义结构体与宏
2、编写hal模块的open函数
3、定义hw_module_methods_t结构体变量
4、定义HAL_MODULE_INFO_SYM变量
5、编写hal模块的close函数
6、编写控制led的函数