zoukankan      html  css  js  c++  java
  • 第9 章 硬件抽象层: HAL

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

    统一硬件的调用接口。由于HAL 有标准的调用接口,所以可以利用HAL屏蔽Linux 驱动复杂、不统一的接口。解决了GPL版权问题。由于Linux 内核基于GPL协议,而Android 基于Apache Licence 2 .0 协议。因此Google 玩了个“穿越”,将原本位于Linux驱动中的敏感代码向上移了一个层次这样这些敏感代码就摆脱了GPL 协议的束缚。那些不想开源的Linux驱动作者也就没必要开源了。

    针对一些特殊的要求。对于有些硬件,可能需要访问一些用户空间的资源,或在内核空间不方便完成的工作以及特殊需求。在这种情况下,可以利用位于用户空间的HAL 代码来辅助Linux驱动完成一些工作。HAL架构比较简单,其基本原理就是在Android 系统中使用程序库(.so文件)调用位于内核空间的Linux 驱动(一般通过设备文件访问)。然后沟Android 面用程序(APK 文件)可以通过NDK程序访问HAL中的程序,或直接在Android 应用程序中访问HAL中的程序库(直接使用Java代码访问)

    编写支持HAL 的Linux 驱动程序的步骤;第1 步: 编写Linux 驱动;第2 步:编写HAL Library;第3 步:编写Service Library

    在Android.系统中使用Linux 驱动有两种方式。一种就是通过传统的方式直接与Lmux 驱动交互。另外一种是Android特有的,就是通过HAL 模块。HAL 模

    块本质上就是通过Linux 共享库(.so)与Linux驱动交互,然后应用程序再访问Linux共享库。

  • 相关阅读:
    【C++】未定义的标识符“_TCHAR*”
    【C++】编写动态库DLL
    【C++】使用SQLite步骤及示例
    【VS】如何查询该项目是什么样工程类型
    新概念英语第一册单词
    地道情景表达一
    日常学习经典口语一
    全国省市区sql脚本
    关于Object.defineProperty
    响应式原理
  • 原文地址:https://www.cnblogs.com/zhenghuijun/p/5616411.html
Copyright © 2011-2022 走看看