zoukankan      html  css  js  c++  java
  • 第九章硬件抽象层:HAL

    第九章硬件抽象层:HAL

    第九章主要介绍建立在Linux驱动之上的一套程序库HAL(硬件抽象层)。这套程序库不属于Linux内核,而是属于Linux内核层之上的应用层。

           Google为Android增加HAL的主要目的除了尽量避免应用程序直接访问Linux驱动外,还可以保护“私人财产”。对于那些既想发布基于Android的Linux驱动程序,又不想将核心逻辑公开的企业或个人,HAL就是福音。

    第一节为什么要在Android中加入HAL

           对于不想开源的Linux驱动作者,Linux只相当于一个“数据二传”。也就是说在Linux驱动中不应该保留任何不想公开的业务逻辑代码(代码在HAL中),而只保留与寄存器交互的代码,访问寄存器只有Linux内核的相关函数能做到。如果这样安排,Linux驱动就只剩下一个空壳了,唯一的功能就是接收由HAL传过来的数据,并将这些数据写入指定的寄存器中,或从寄存器读取数据,并返回给HAL。从这一点来看,带HAL的Linux驱动就相当于将数据从HAL传到传感器,或从寄存器传到HAL的“数据二传”。

    第二节Android HAL架构

          

    HAL模块中的核心代码不变,只是添加了一些新的HAL架构要求的入口代码,使这些程序库可以自动被Android系统识别。而调用HAL模块的代码并不需要直接装载.so文件,而只需要通过一个ID来定位相应的.so文件(这里叫做Stub)。在Stub和JNI之间还有一层Service程序库,该层的库文件使用Android系统提供的调用HAL的机制访问HAL中的Service程序库。然后Android应用程序再调用Service程序库。

    第三节为LED驱动增加HAL

           步骤:

                  编写Linux驱动

                  编写HAL Library

                  编写Service Library

  • 相关阅读:
    第二章 数据类型、变量、和运算符
    第一章
    ActiveMQ点对点的发送和接收
    初探设计模式(1)——工厂模式
    IDEA使用switch传入String编译不通过
    MyBatis日期转换报错
    HTML页面传值问题
    maven配置本地仓库
    Maven的下载及安装
    PHP实现获得一段时间内所在的所有周的时间
  • 原文地址:https://www.cnblogs.com/maxgty/p/5653941.html
Copyright © 2011-2022 走看看