Android深度探索--HAL与驱动开发----第九章读书笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android深度探索--HAL与驱动开发----第九章读书笔记相关的知识,希望对你有一定的参考价值。

Googleandroid加入HAL主要有如下的目的。

统一硬件的调用接口。由于HAL 有标准的调用接口,所以可以利用HAL屏蔽Linux 驱动复杂、不统一的接口。

解决了GPL版权问题。由于Linux 内核基于GPL协议,而Android 基于Apache Licence 2 . 0、协议。因此Google 玩了个“穿越“,将原本位于Linux驱动中的敏感代码向上移了一个层次。这样这些敏感代码就摆脱了GPL 协议的束缚, 那些不想开源的Linux驱动作者也就没必要开源了。

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

编写一款支持HAL Linux 驱动程序的步骤

1 步 编写Linux 驱动

“编写Linux 驱动”,从表明上看是废话,但如果要为linux 驱动添加HAL,而且想尽量保护敏感数据。Linux 驱动的代码就要尽量简洁,尽可能将业务逻辑放到HAL Library 中。

2 步:编写HAL

HAL Library 就是普通的Linux Library (*.so )文件。但这类库文件有一个接口。通过HAL MODULE_INFO SYM 变量实现。Service Library 就是通过在这个接口中定义的ID 定位HALLibrary的。

3 步:编写Service Library

尽管这步并不是必需的,但新的HAL 架构要求我们这样做。Service Library 也是Linux Library 。这一步比较灵活。Service Library 可以是一般的Linux Library,也可以是JNI Library

以上是关于Android深度探索--HAL与驱动开发----第九章读书笔记的主要内容,如果未能解决你的问题,请参考以下文章

Android深度探索(卷一)HAL与驱动开发 第七章

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

Android深度探索(卷一)HAL与驱动开发 第八章

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

Android深度探索(卷一)HAL与驱动开发 第十章

《Android深度探索》(卷1)HAL与驱动开发读后感