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共享库。

  • 相关阅读:
    js禁止空格的输入
    js对cookie的读写操作
    js实现读秒
    formData的简单使用
    图形验证码笔记
    Redis安装
    ZooKeeper安装
    OpenJDK 编译-Linux环境
    Java环境变量-Linux环境
    ArchLinux+Win10双系统的Grub配置
  • 原文地址:https://www.cnblogs.com/redknot/p/5653443.html
Copyright © 2011-2022 走看看