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

      Android系统中使用linux驱动有两种方式。一种就是通过传统的方式直接与linux驱动交互,另一种就是通过HAL模块。HAL模块本质上就是通过linux共享库与linux驱动交互,然后应用程序在访问linux共享库。

      硬件抽象层HAL是建立在linux驱动之上的一套程序库。它并不属于linux内核,而是属于linux内核层之上的应用层。位于Android的系统运行库层。

      AndroidHAL的源代码存储的位置并不固定,一般会存储在Android源代码目录/hardware目录中,其中Android源代码目录/hardware/libhardware_legacy目录用来存储臼HAL架构的源代码文件。新HAL架构的源代码在Android源代码目录/hardwarelibhardware目录中。当然也可以放在Android源代码目录/hardware或其他目录中。最终编译生成的.so文件主要放在Android系统的/system/lib/hw目录,同样可以放其他目录。

      Android增加HAL的主要目的:统一硬件的调用接口;解决了GPL版权问题;针对一些特殊的要求;除了尽量避免应用程序直接访问linux驱动外,还有保护“私人财产”。

      传统的linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑代码。

      编写支持HAL的linux驱动的步骤:编写linux驱动;编写HAL Library;编写Service Library。

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

                                                                                               16:07:59

                                                                                              2016-07-03

  • 相关阅读:
    转载:稳定性,鲁棒性和非脆弱性的精辟解读
    BZOJ 2806: [Ctsc2012]Cheat(单调队列优化dp+后缀自动机)
    CF 235C. Cyclical Quest(后缀自动机)
    BZOJ 5137: [Usaco2017 Dec]Standing Out from the Herd(后缀自动机)
    2019/2/28 考试记录
    后缀自动机的应用
    CF 452E. Three strings(后缀数组+并查集)
    BZOJ 2281: [Sdoi2011]黑白棋(dp+博弈论)
    CF 39E. What Has Dirichlet Got to Do with That?(记忆化搜索+博弈论)
    LUOGU P4783 【模板】矩阵求逆(高斯消元)
  • 原文地址:https://www.cnblogs.com/sakura029/p/5638200.html
Copyright © 2011-2022 走看看