zoukankan      html  css  js  c++  java
  • 第九章硬件抽象层

    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的函数

  • 相关阅读:
    远程安装WinXP OEM版系统的痛苦经历
    许可证服务因许可证不够出现占用CPU的故障
    AvayaP133G2和3Com 3300交换机间的Vlan连接
    从win2000升级到win2003后ISA2000缓存的问题
    大型局域网中用ISA隔离部分计算机
    ORACLE学习第二天
    ORACLE ROWID解析
    ORA32773问题解决
    ORACLE学习第三天
    ORACLE表空间迁移
  • 原文地址:https://www.cnblogs.com/BJBLOG/p/5651400.html
Copyright © 2011-2022 走看看