Android中HAL如何向上层提供接口总结

2014-11-24 14:30:34 · 作者: · 浏览: 3

参考文献:


建议阅读本文时先浏览以上两篇文章,本文是对上两篇文章在HAL对上层接口话题的一个总结.


HAL的全称是Hardware Abstraction Layer,即硬件抽象层.其架构图如下:



总结下来,Android HAL存在的原因主要有:


1. 并不是所有的硬件设备都有标准的linux kernel的接口


2. KERNEL DRIVER涉及到GPL的版权。某些设备制造商并不原因公开硬件驱动,所以才去用HAL方式绕过GPL。


3. 针对某些硬件,Android有一些特殊的需求.


首先来看三个与HAL对上层接口有关的几个结构体:


这几个数据结构是在Android工作目录/hardware/libhardware/include/hardware/hardware.h文件中定义.


一般来说,在写HAL相关代码时都得包含这个hardware.h头文件,所以有必要先了解一下这个头文件中的内容.


由以上内容可以看出(typedef struct hw_module_t ,typedef struct hw_device_t),如果我们要写一个自定义设备的驱动的HAL层时,我们得首先自定义两个数据结构: