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

    硬件抽象层:HAL

    HAL(硬件抽象层)是建立在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。Google为Android增加HAL的主要目的除了尽量避免应用程序直接访问Linux驱动外,还有一个重要原因,那就是保护“私人财产”。

    在传统的Linux系统中Linux驱动一般有两种类型:访问硬件寄存器的代码和业务逻辑代码。对于访问硬件寄存器的代码,并没有什么秘密可言,因为这都是调用的Linux内核的标准函数进行的标准操作。Google为了满足这些不想开源的Linux驱动作者的要求,在Android层次结构中的系统运行库层增加了一个HAL。Google为Android加入HAL主要的目的:统一硬件的调用接口;解决了GPL版权问题;针对一些特殊的要求。

    Android HAL架构比较简单,其基本原理就是在Android系统中使用程序库调用位于内核空间的Linux驱动。然后Android应用程序可以通过NDK程序访问HAL中的程序库,或直接在Android应用程序中访问HAL中的程序库。

    编写HAL模块的步骤和原理:定义结构体和宏;编写HAL模块的open函数;定义hw_module_methods_t结构体变量;定义HAL_MODULE_INFO_SYM变量;编写HAL模块的close函数;编写控制LED的函数。

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

  • 相关阅读:
    HDU 1202 The calculation of GPA
    HDU 1201 18岁生日
    HDU 1200 To and Pro
    C语言实现的图的深度搜索与广度搜索程序
    深度优先搜索和广度优先搜索的深入讨论
    Linux sftp 安全文件传输命令
    看白鹿原有感
    中国人民抗日战争暨世界反法西斯战争胜利70周年(20150903)
    高一的我曾对自己说"要放慢脚步去生活"!?
    网络营销(续)
  • 原文地址:https://www.cnblogs.com/dsdw/p/5651389.html
Copyright © 2011-2022 走看看