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

    HAL(Hardware Abstraction Layer)硬件抽象层是建立在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架构

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

    1.编写linux驱动

    2.编写HAL Library

    3.编写Service Library

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

  • 相关阅读:
    字典序(摘)
    N
    Y
    B
    购物网站和秒杀系统实现技术
    行测技巧:十字交叉法解决比值混合问题
    数学符号读法大全
    搜狐畅游编程题
    sql删除重复记录
    'for' loop initial declarations are only allo
  • 原文地址:https://www.cnblogs.com/redknot/p/5653443.html
Copyright © 2011-2022 走看看