• 硬件抽象层: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

  • 相关阅读:
    postgresql 修改配置,允许外部访问
    geopandas 把 shp 文件入库到 postgis 数据库
    geopandas 生成 geojson 文件
    geopandas 生成 shp 文件
    STM32 FSMC LCD 液晶的驱动—ILI9320
    SSTV简介+常用频率表+工作原理
    CasRel 一种新的用于关系三重抽取的级联二进制标记框架
    JAVA类在JVM加载过程
    20201320第三周学习笔记
    20201320第四周学习笔记
  • 原文地址:https://www.cnblogs.com/sakura029/p/5638200.html
Copyright © 2020-2023  润新知