• 第九章


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

    在android中加入HAL的目的:

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

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

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

    编写一款支持HAL的Linux驱动程序的步骤:

    第1步:编写 Linux 驱动

    “编写 Linux 驱动”,从表明上看是废话,但如果要为 Linux 驱动添加 HAL,而且想尽量保护敏感数据。Linux驱动的代码就要尽量简洁,尽可能将业务逻辑放到HAL Library中。

    第2步:编写HAL Library

    第3步:编写Service Library

    新的HAL架构要求我们这样做。Service Library也是Linux Library。

    编写HAL模块的步骤:第1步:定义结构体和宏;第2步:编写HAL模块的open函数;第3步:定义hw_module_methods_ t结构体变量;第4步: 定义HAL_MODULE_INFO_SYM 变量;第5步:编写HAL模块的close函数;第6步:编写控制LED的函数

  • 相关阅读:
    GUID概念
    某猿的饭局
    SVN切分支步骤
    OSX:设置用户默认浏览器
    值得推荐的android开发框架简单介绍
    用实力让情怀落地!阅兵前线指挥车同款电视TCL H8800受捧
    Excel查询序列所相应的值-vLoopup函数,求比例分子改变但分母不变
    CSS3制作W3cplus的关注面板
    Spring MVC框架实例
    @property 和@synthesize
  • 原文地址:https://www.cnblogs.com/homwok/p/5644667.html
Copyright © 2020-2023  润新知