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

             HAL(硬件抽象层)是建立在Linux驱动之上的一套程序库。是属于Linux内核之上的应用层。传统的Linux系统中Linux驱动一般有两种:访问硬件寄存器的代码和业务逻辑代码。而HAL是位于Android的系统运行库层,采用Android licence2.0协议,就不必开源了。加入Hal的目的:(1)同意硬件的调用接口。(2)解决了GPL版权问题。(3)针对一些特殊的要求。HAL架构Android SDK和应用程序(APK)、NDK部分、Service程序库(.so)、HAL程序库(.so)(将.so文件隐藏起来)、Linux驱动程序。

             编写支持HAL的Linux驱动程序的步骤:(1)编写Linux驱动。(2)编写HAL library(即普通的Linux library(*.so)文件)。(3)编写service library。

             编译和安装Led驱动sh build.sh。rwdev:命令行程序。<r|w>:读或写命令。〈dev_file〉:设备文件名。〈byte_count〉:写入或读取的字节数。<byte1>:写入的字节。HAL输入Android的一部分,在编译HAL模块之前需要Android源代码。Leds_hal.h头文件用于定义结果体、宏和引用一些系统的头文件。

    编写HAL模块的步骤:1.定义结构体和宏。2.编写HAL模块的open函数。3.定义hw_module_methods_t结构体变量。4.定义HAL_HODILE_INFO_SYM变量.5.编写HAL模块的close函数。6.编写控制LED的函数。

    编写调用HAL模块的Service。HAL模块库文件的存放路径:/sysrem/lib/hw和/vendor/lib/hw。HAL模块库文件的命名规则是ID.suffix.so。编写调用Service的java库。之后进行LED驱动的测试。

    在Android系统中使用Linux驱动的两种方式:1.直接与Linux驱动交互。2.通过HAL模块。HAL模块本质上就是通过Linux共享库(.so)与Linux驱动交互,然后应用程序在访问Linux共享库。

  • 相关阅读:
    【Codeforces】Codeforces Round #680 Div2
    PS1 长命令回到行首进行覆盖
    vue 跟路径加载缺少跟前缀
    Mac OS Virtualbox 倒入 ova 镜像文件
    笔记本电脑扩展屏幕或设备后不能播放声音
    git clone 后使用子分支
    laravel 环境自编译过程
    virtual Box centos7 公司网络环境下不能联网的解决方案
    CentOS7 php7 安装 curl 扩展
    CentOS 7 安装 Nodejs npm 及版本冲突解决
  • 原文地址:https://www.cnblogs.com/sxauzzj/p/5614328.html
Copyright © 2011-2022 走看看