• 硬件抽象层: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共享库。

  • 相关阅读:
    [转]C# 文本框只能输入数字
    [转]C# dataGridview 报“索引-1没有值”的解决办法
    配置<authorization>节(配置文件)
    [转]javascript的urlencode
    SSM框架搭建问题
    web server
    mysql 系列
    UI 框架、ORM、权限系统
    一个基于 .NET Core 2.0 开发的简单易用的快速开发框架
    DotNetty 版 mqtt 开源客户端 (MqttFx)
  • 原文地址:https://www.cnblogs.com/orange921/p/5638462.html
Copyright © 2020-2023  润新知