• 第九章


    第九章介绍了硬件抽象层:HAL是建立在Linux驱动之上的一套程序库,这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。

    刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口。二,解决了GPL版权问题。三,针对一些特殊的要求。可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作。
    下一个小节讲了Android HAL 架构。接下来讲了为led驱动增加HAL,主要是将所有的业务逻辑从LED驱动移到HAL模块,而LED驱动只保留读写寄存器的功能。
    涉及的HAL步骤:1.编写Linux驱动2.编写HAL Library 3.编写Service Library 精简LED驱动。

    测试读写寄存器操作:在编写Linux驱动以及驱动相关的程序的过程中应分段测试每一部分程序。本小节将编写一个用于测试上一节实现的LED驱动的程序,需要单独做一个程序向设备文件写入字节形式的数据,本节实现的测试程序通过命令行参数来传递设备文件名、字节数和要传递的字节等信息,接下来讲编写调用LED驱动的HAL 模块,本节将实现LED驱动HAL模块部分,在这个HAL模块中包含了LED驱动的所有业务逻辑。
    编写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的函数
    总之,本章讲了在Android系统中使用Linux的一种驱动方式。

  • 相关阅读:
    插入排序
    排序算法结构表
    两个数字交换的四种方法
    LRU算法实现
    虚拟用户的配置
    【转】Linux查看CPU和内存使用情况
    Linux 多线程开发
    【转】RTSP流理解
    【转】DynDNS使用随笔
    【转】使用 udev 高效、动态地管理 Linux 设备文件
  • 原文地址:https://www.cnblogs.com/jiaxing754/p/5641747.html
Copyright © 2020-2023  润新知