• 硬件抽象层:HAL


    HAL硬件抽象层是建立在Linux驱动之上的一套程序库。属于Linux内核层上的应用层。HAL的主要目的是尽量避免应用程序直接访问Linux驱动,保护“私人财产”。传统的Linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑代码。

    为什么要在android中加入HAL

    为了满足不想开源的linux驱动作者的要求。HAL位于android的系统运行库层。即HAL属于android的一部分。所以不需要开源。

    Google为Android加入HAL的主要目的

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

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

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

    Android HAL架构

     

    为led驱动增加HAL

    编写支持HAL的linux驱动程序的步骤

    1.编写linux驱动

    2.编写HAL Library

    3.编写Service Library

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

  • 相关阅读:
    无向图的双连通分量
    以管理员身份运行软件cmd命令
    异或
    递推求解DAG最长路径长度及最长路径条数
    有向图转强连通图最少加边数
    Tarjan强连通分量(scc)
    uni封装request请求
    生命周期
    页面路由,以及传值
    WXS 模块
  • 原文地址:https://www.cnblogs.com/orange921/p/5638462.html
Copyright © 2020-2023  润新知