zoukankan      html  css  js  c++  java
  • 第九章心得体会

    通过第九章的学习,我学到了如下知识点:

    第九章:硬件抽象层:HAL

    9.1为什么要在Android中加入HAL

    1.HAL并不是Linux内核的一部分,而是位于Android的系统运行库层

    2.为Android加入HAL主要目的:统一硬件的调用借口,解决了GPL的版权问题,针对一些特殊的要求。

    9.2Android HAL架构

    9.3为LED驱动增加HAL

    1.编写一款支持HAL的Linux驱动程序的步骤

    第一步:编写Linux驱动

    Linux驱动代码要尽量的简洁,尽可能将业务逻辑放到HAL Library

    第二步:编写 HAL Library

    HAL library就是普通的Linux library文件,但这类库文件有一个接口,通过HAL_MODULE_INFO_SYM变量实现,service library就是通过在这个接口中定义的ID定位HAL library的。

    第三步:Service Library

    这一步不是必须用到的。

    2.颠覆Linux驱动的设计理念:精简LED驱动

    编写LED驱动时需要注意:不和之前的LED冲突,需要修改部分代码避免冲突

    3.测试读写寄存器操作

    命令行语法格式:rwdev:命令行程序

                    <r|w>:读或写命令,r代表读取寄存器中的数据,w表示向寄存器写入数据。

                    <dev_file>:设备文件名

                    <byte_count>:写入或读取的字节数

                    [byte1],[byte2]:写入的字节

    4.编写调用LED驱动的HAL模块

    在这个HAL模块中包含了LED驱动的所有业务逻辑

    编写HAL模块的步骤和原理:

    第一步:定义结构体和宏

    编写HAL模块需要使用3个非常重要的结构体(hw_module_t,hw_device_t,hw_module_methods_t)

    第二步:编写HAL模块的open函数

    Open函数是HAL模块的入口点

    第三步:定义hw_module_methods_t结构体变量

    HAL模块需要hw_module_methods_t结构体的open函数指针变量指定open入口函数。

    第四步:定义HAL_MODULE_INFO_SYM变量

    所有的HAL模块都必须有它

    第五步:编写HAL模块的close函数

    当HAL模块被卸载后会调用close函数

    第六步:编写控制LED的函数

    设备类型和功能的不同,这一步编写的函数也有所不同

    5.编写调用HAL模块的service

    6.HAL模块的存放路径和命名规则

    HAL模块通常存放在/system/lib/hw目录下,文件名一般都有一个default

    7.编写调用service的iava库

    8.测试LED驱动

    测试程序通过直接向LED驱动设备文件发送字符串来控制LED

  • 相关阅读:
    BOI 2002 双调路径
    BOI'98 DAY 2 TASK 1 CONFERENCE CALL Dijkstra/Dijkstra+priority_queue/SPFA
    USACO 2013 November Contest, Silver Problem 2. Crowded Cows 单调队列
    BOI 2003 Problem. Spaceship
    USACO 2006 November Contest Problem. Road Blocks SPFA
    CEOI 2004 Trial session Problem. Journey DFS
    USACO 2015 January Contest, Silver Problem 2. Cow Routing Dijkstra
    LG P1233 木棍加工 动态规划,Dilworth
    LG P1020 导弹拦截 Dilworth
    USACO 2007 February Contest, Silver Problem 3. Silver Cow Party SPFA
  • 原文地址:https://www.cnblogs.com/ly0419/p/5651643.html
Copyright © 2011-2022 走看看