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

  • 相关阅读:
    H3CNE学习2,3 TCP-IP模型
    H3CNE学习1 课程简介
    TCPDUMP抓包学习
    Kubernetes 学习26 基于kubernetes的Paas概述
    Kubernetes 学习25 创建自定义chart及部署efk日志系统
    Linux https认证原理
    Kubernetes 学习24 helm入门
    【MySQL基础总结】索引的使用
    【MySQL基础总结】常用函数库
    【MySQL基础总结】运算符的使用
  • 原文地址:https://www.cnblogs.com/BJBLOG/p/5651400.html
Copyright © 2011-2022 走看看