码迷,mamicode.com
首页 > 其他好文 > 详细

第九章心得体会

时间:2016-07-07 22:29:02      阅读:501      评论:0      收藏:0      [点我收藏+]

标签:

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

第九章:硬件抽象层: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

第九章心得体会

标签:

原文地址:http://www.cnblogs.com/ly0419/p/5651643.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!