zoukankan      html  css  js  c++  java
  • 读《Android深度探索(卷1)HAL与驱动开发》的一些思考09

    GoogleAndroid加入HAL主要有如下的目的

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

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

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

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

    1 步 编写Linux 驱动

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

    2 步:编写HAL

    HAL Library 就是普通的Linux Library (*.so )文件。但这类库文件有一个接口。通过HAL MODULE_INFO SYM 变量实现。Service Library 就是通过在这个接口中定义的ID 定位HALLibrary的。

    3 步:编写Service Library

    尽管这步并不是必需的,但新的HAL 架构要求我们这样做。Service Library 也是Linux Library 。这一步比较灵活。Service Library 可以是一般的Linux Library,也可以是JNI Library

  • 相关阅读:
    drf—— 序列化组件
    drf—— RESTful API规范
    drf——APIView及其内部函数/类的源码分析
    drf—— drf的安装和使用
    226翻转二叉树
    51,N皇后
    557反转字符串中的单词III
    17.电话号码的字母组合
    459重复的子字符串
    419递增子序列
  • 原文地址:https://www.cnblogs.com/limomo/p/5608199.html
Copyright © 2011-2022 走看看