• 第九章硬件抽象层


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

    加入HAL的主要目的:

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

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

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

    LED驱动增加HAL

    编写支持HALlinux驱动程序的步骤:

    1、编写linux驱动:linux的驱动代码要尽量简洁,尽可能将业务逻辑放到HAL Library中。

    2、编写HAL LibraryHAL Library就是普通的Linux library*.so)文件。但这类库文件中有一个接口。通过HAL_MODULE_INFO_SYM变量实现。Service library就是通过这个接口中定义的ID定位HAL Library

    3、编写Service Library

    编写HAL的步骤:

    1、定义结构体和宏

    2、编写HAL模块的open函数

    3、定义hw_module_methods_t结构体变量

    4、定义HAL_MODULE_INFO_SYM变量

    5、编写HAL模块的close函数

    6、编写控制LED的函数

  • 相关阅读:
    关于oracle数据库(10)函数
    关于oracle数据库(9)
    关于oracle数据库(8)查询2
    关于oracle数据库(7)查询1
    关于oracle数据库(6)约束
    关于oracle数据库(5)增删改查
    关于oracle数据库(4)数据类型
    爬虫之beautifulsoup
    影视项目报错情况及处理
    多app应用等系列汇总
  • 原文地址:https://www.cnblogs.com/BJBLOG/p/5651400.html
Copyright © 2020-2023  润新知