第九章 硬件抽象层:HAL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第九章 硬件抽象层:HAL相关的知识,希望对你有一定的参考价值。

第九章 硬件抽象层:HAL

      HAL是建立在Linux驱动之上的一套程序库。是属于Linux内核之上的应用层。

     第一部分讲为什么要在android中加入HAL,传统的Linux系统中Linux驱动一般有两种:访问硬件寄存器的代码和业务逻辑代码。而HAL是位于Android的系统运行库层,采用Android licence2.0协议,就不必开源了。加入Hal的目的:(1)统一硬件的调用接口。(2)解决了GPL版权问题。(3)针对一些特殊的要求。HAL架构Android SDK和应用程序(APK)、NDK部分、Service程序库(.so)、HAL程序库(.so)(将.so文件隐藏起来)、Linux驱动程序。

     第三部分写为LED驱动增加HAL, 编写支持HAL的Linux驱动程序的步骤:(1)编写Linux驱动。(2)编写HAL library(即普通的Linux library(*.so)文件)。(3)编写service library。

      编译和安装Led驱动sh build.sh。rwdev:命令行程序。<r|w>:读或写命令。〈dev_file〉:设备文件名。〈byte_count〉:写入或读取的字节数。<byte1>:写入的字节。HAL输入Android的一部分,在编译HAL模块之前需要Android源代码。Leds_hal.h头文件用于定义结果体、宏和引用一些系统的头文件。

      编写HAL模块的步骤:1.定义结构体和宏。2.编写HAL模块的open函数。3.定义hw_module_methods_t结构体变量。4.定义HAL_HODILE_INFO_SYM变量.5.编写HAL模块的close函数。6.编写控制LED的函数。

      编写调用HAL模块的Service。HAL模块库文件的存放路径:/sysrem/lib/hw和/vendor/lib/hw。HAL模块库文件的命名规则是ID.suffix.so。编写调用Service的java库。之后进行LED驱动的测试。

    在Android系统中使用Linux驱动的两种方式:1.直接与Linux驱动交互。2.通过HAL模块。HAL模块本质上就是通过Linux共享库(.so)与Linux驱动交互,然后应用程序在访问Linux共享库。

    这一章的内容不是太难,但是对于理解Android硬件抽象层由很大的帮助,通过本章的学习使我对Android有了更深的理解。

 博客园地址:http://www.cnblogs.com/j-wei

以上是关于第九章 硬件抽象层:HAL的主要内容,如果未能解决你的问题,请参考以下文章

第九章:硬件抽象层:HAL

第九章 硬件抽象层:HAL

第九章 硬件抽象层: HAL

第九章 硬件抽象层:HAL

第九章:硬件抽象层:HAL

第九章 硬件抽象层:HAL 读后感