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

     本节我们研究硬件抽象层:HALHAL,它是建立在Linux驱动之上的一套程序库。刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口。二,解决了GPL版权问题。三,针对一些特殊的要求。可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作。HAL主要有以下目的:统一硬件的调用接口。由于HAL有标准的调用接口,所以可以利用HAL屏蔽了Linux驱动复杂、不统一的接口;解决了GPL协议;针对一些特殊的要求。对于一些硬件,可能需要访问一些用户空间的资源,或在内核空间不方便完成的工作以及特殊需求。在这种情况下,可以利用位于空间的HAL代码来辅助Linux完成一些工作。

    本章实现的LED驱动包含了Linux驱动、HAL模块、Service程序库、NDK程序和Java程序。

    编写HAL模块的步骤和原理如下。
    第一步:定义结构体和宏   编写HAL模块需要使用到3个非常重要的结构体,在第一步需要定义两个新的结构体。
    第二步:编写HAL模块的open函数    open函数是HAL模块的入口点。本例中使用的是led_device_open函数。该函数主要做如下三个工作。初始化hw_device_t的子结构体。 打开设备文件。 初始化寄存器。
    第三步:定义hw_module_methhods_t 结构体变量
    第四步:定义HAL_MODULE_INFO_SYM函数
    第五步:编写HAL模块的close 函数  当HAL模块被卸载后会调用close函数
    第六步:编写控制LED的函数

  • 相关阅读:
    遥控器油门摇杆电位器封装尺寸图
    Microhard P900 900MHz跳频电台核心模块
    航路点
    当电桥为恒流源时惠斯通电桥电压的计算方法
    曲轴位置传感器
    16种发动机动态工作原理图,神奇的帅呆了!
    ffmpeg mediacodec 硬解初探
    ffmpeg编码常见问题排查方法
    阿里云 访问控制RAM
    WannaCry勒索病毒处理指南
  • 原文地址:https://www.cnblogs.com/craymc/p/5638032.html
Copyright © 2011-2022 走看看