安卓移植和驱动开发第九章心得体会
2016-07-08 11:56 软件1304孙涛 阅读(145) 评论(0) 编辑 收藏 举报HAL ( Hardware Abstraction Layer,硬件抽象腔,〉是建立在Linux驱动之上的一套翻字库。这套程序 j率并不属于 Linux 内核, 而是属于 Linux 内核层之上的应用层。 Google 为 Android 增加 HAL 的主要目 的除了尽量避免应用程序直接访问 Linux 驱动外,还有一仓重要原因,那就是保护 “私人财产”。-对于 那些既想发布茬子·Android,的Linux驱动程序,又不想将核心业务逻辑公开的企业或个人,这时候HAL显得非常重要了。
在传统的 Linux.系统中Linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑有码。对于访问硬件寄存器的代码,并没有什么秘密可言,因为这都是调用的 Linux 内核的标准函数〈如 ioad32·iowrite32等)进行的标准操作。比也架构比较简单,其基本原理就是在Android系统中使用程序库 Cso文件) 调用位守内核空间的Linux驱动 〈一般通过设备文件访问)。 然后沟通1droid面用程序{APK文件〉,也可以通过NDK程序访问HAL中的程序库,或者也可以直接在安卓的程序中进行访问。
编写支持 HAL 的 Linux 驱动程序的步骤:1. 编写 Linux 驱动 2.编写 HAL Library 3.编写 Service Library 。
在Android.系统中使用 Linux驱动有两种方式。 一种是通过传统的方式直接与Limux驱动交互。例如, 直接读写设备文件的数据。另外→种是 Android特有的,就是通过 HAL模块HAL模块本质就是通过Linux共享库与Linux驱动交互,然后应用程序再访问 Linux.共享库。早期的HAL模块应用程序直接按访问Linux共字库的方式调用。而高版本的Android系统为HAL I曾加了Stub换句话说还就是为每一个 HALi共享库指定一个id, 再利用这个id 配合一定的规则 找到 Linux共享库,这样 Linux 共享库更换文件名,移动位置都很方便。
http://www.cnblogs.com/suntao123/