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

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

第九章 硬件抽象层HAL学习

 

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

一、统一硬件的调用接口blog

因为H A L有标准的调用接口,因此能够利用HAL屏蔽L i n u x驱动复杂、不统一的接口;接口

二、解决了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驱动做者也就不必开源了。开发

三、针对一些特殊的要求变量

    对于有些硬件,可能须要访问一些用户空间的资源,或在内核空间不方便完成的工做以及特殊需求。在这种状况下,能够利用位于用户空间的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.编写控制函数

相关文章
相关标签/搜索