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

  • 相关阅读:
    django 静态文件模版上传下载配置
    drf ModelViewSet之匹配路由参数
    Django drf序列化外键关联表ID以为字段
    Django 自关联递归序列化模块 django-rest-frame-recursive模块
    Python利用Psycopg2模块将Excel表格数据导入Postgressql
    PyTorch中view的用法
    P1113 杂务 【拓扑排序】
    P3916 图的遍历 【反向建图+DFS】
    P2814 家谱【map型的并查集】
    P1102 A-B 数对【map】
  • 原文地址:https://www.cnblogs.com/sakura029/p/5638200.html
Copyright © 2011-2022 走看看