zoukankan      html  css  js  c++  java
  • 第九章

    心得体会:本章主要讲硬件抽象层:HAL,它是建立在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的一种驱动方式。

  • 相关阅读:
    【leetcode】1365. How Many Numbers Are Smaller Than the Current Number
    【leetcode】1363. Largest Multiple of Three
    【leetcode】1362. Closest Divisors
    【leetcode】1361. Validate Binary Tree Nodes
    【leetcode】1360. Number of Days Between Two Dates
    【leetcode】1359. Count All Valid Pickup and Delivery Options
    【leetcode】1357. Apply Discount Every n Orders
    【leetcode】1356. Sort Integers by The Number of 1 Bits
    ISE应用入门的一些问题
    DDR的型号问题
  • 原文地址:https://www.cnblogs.com/sjpeng/p/5592394.html
Copyright © 2011-2022 走看看