Android深度探索(卷1)HAL与驱动开发学习笔记(9)

Android深度探索(1)HAL与驱动开发学习笔记(9

第九章 硬件抽象层HAL

G o o g l eAndroid加入HAL主要有如下的目的:

1、统一硬件的调用接口

由于H A L有标准的调用接口,所以可以利用HAL屏蔽L i n u x驱动复杂、不统一的接口;

2、解决了G PL版权问题

由于L i n u x内核基于GP L协议,而A n d r o i d基于A p a c h e Licence 2 . 0协议.因此G o o g l e玩了个“穿越”将原本位于L i n u x驱动中的敏感代码向上移了一个层次,这样这些敏感代码就摆脱了G P L协议的束缚,。那些不想开源的L i n u x驱动作者也就没必要开源了。

3、针对一些特殊的要求

    对于有些硬件,可能需要访问一些用户空间的资源,或在内核空间不方便完成的工作以及特殊需求。在这种情况下,可以利用位于用户空间的H A L代码来辅助L i n u x驱动完成一些工作。

 

 

编写支持HALLinux驱动的步骤

1.编写Linux驱动

2.编写HAL library

3.编写Service library

编写HAL模块的步骤和原理

1.定义结构体和宏

*描述HAL模块的hw_moudle_t结构体

*描述HAL设备的hw_device_t结构体

*描述模块入口函数的hw_moudle_motheoth_t结构体

2.编写HAL模块的open函数

3.定义hw_moudle_motheoth_t结构体变量

4.定义HAL_MOUDLE_INFO_SYM结构体变量

5.编写HAL模块的close函数

6.编写控制函数

原文地址:https://www.cnblogs.com/zhangnene/p/5640705.html