第九章 心得体会

通过第九章的学习,知道了什么事HAL以及为什么要使用HAL和关于HAL的驱动实例。

学到的知识:

一、为什么要在Android中加入HAL

统一硬件的调用接口、解决了GPL版权问题、针对一些特殊的要求。

二、为LED驱动增加HAL

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

第1步:编写Linux驱动

第2步:编写HAL Library

第3步:编写Service Library

2.精简LED驱动

基本原理是只从指定都存器读取或写入5个字节。第 l个字节用于指定读写的动作以及寄存器类型。后4个字节是读写的实际的数据。在与LED驱动交互时,只要向设备文件读取或发送5个字节的数据,就可以读写指定的寄存器。

3.测试读写寄存器操作

命令行语法格式:

rwdev:命令行程序。

<rlw>:读或写命令。

<dev fl.le>:设备文件名,

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

[bytel]、[byte2]... [byten]:写入的字节。

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

第l步:定义结构体和宏

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

初始化hw_device_t的子结构体、打开设备文件、初始化寄存器

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

第4步:定义HAL_MODULE_INFO_SYM变量

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

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

在Android系统中使用Linux驱动有两种方式。一种是通过传统的方式直接与Linux驱动交互。另外一种是 Android特有的,就是通过HAL模块。

时间: 2024-12-17 05:53:12

第九章 心得体会的相关文章

第九章心得体会

通过第九章的学习,我学到了如下知识点: 第九章:硬件抽象层: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 L

《Android深度探索》(卷1)HAL与驱动开发 第九章心得体会

本章主要学习了硬件抽象层:HAL. Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节.也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间.为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件的支持逻辑都放在内核空间

android深度探索第九章心得体会

本章主要讲硬件抽象层:HAL,它是建立在Linux驱动之上的一套程序库.刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口.二,解决了GPL版权问题.三,针对一些特殊的要求.可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作. 编写HAL模块的步骤和原理如下. 第一步:定义结构体和宏编写HAL模块需要使用到3个非常重要的结构体,在第一步需要定义两个新的结构体. 第二步:编写HAL模块的open函数 open函数是HAL模块的入口点.本例中使用的是l

阅读《软件工程—理论方法与实践》第九章心得体会

软件实现主要是对软件代码部分所用语言,编码规范.代码审查等方面进行规划.Java程序要有版权与版本的文件头注释,packcge和import语句,类和接口说明语句.代码要有适当空行,代码行及行内空格,分行.对齐与缩进,命名要有规则(例知望文知义),要有声明,有注释.要注意变量名问题,要方便大家读懂.主要的内存异常问题主要有内存泄漏问题.指针参数问题.”野指针问题,良好的编程习惯对防止内存异常问题十分重要.同时,要避免创建重复对象,优化语句提高性能.

安卓移植和驱动开发第九章心得体会

HAL ( Hardware Abstraction Layer,硬件抽象腔,〉是建立在Linux驱动之上的一套翻字库.这套程序 j率并不属于 Linux 内核, 而是属于 Linux 内核层之上的应用层. Google 为 Android 增加 HAL 的主要目 的除了尽量避免应用程序直接访问 Linux 驱动外,还有一仓重要原因,那就是保护 “私人财产”.-对于 那些既想发布茬子·Android,的Linux驱动程序,又不想将核心业务逻辑公开的企业或个人,这时候HAL显得非常重要了. 在传统

阅读《软件工程—理论方法与实践》第四章心得体会

阅读第四章所得体会.软件需求是决定软件开发是否成功的一个关键因素.开发人员应当学会正确地理解软件需求,实行开非完善但是高质量的需求开发和管理,最大限度地降低软件需求风险.软件需求可以划分为业务需求(定义了项目的远景和范围).用户需求(使用该系统需要完成的任务).系统需求.功能需求(说明了需要开发实现的功能)和非功能需求(功能需求的补充)等型.需求工程是应用已证实有效的原理和方法,并通过合适的工具和符号,系统地描述出待开发系统及其行为特征和相关约束,其过程包括需求获取.需求分析.需求规格说明.需求

大道至简第一章心得体会

大道至简——编程的精义  心得体会      谨以此用于苦恼编程序不得入门的人,不对之处敬请指出 “虽我之死,有子存焉:子又生孙,孙又生子:子又有子,子又有孙.子子孙孙,无穷匮也.而山不加增,何苦而不平?” ——<愚公移山>,<列子-汤问篇> 编程究其本身对大数人而言是一件很苦恼而又无法避免的事情,但是有点可笑的是编程本身实在是一件简单的事,因为“程序=算法+结构”,所谓的编程就是把一件事情交给计算机去做,然后把你的想法“告诉”计算机就行了.但是编程又是一件很“无语”的事情——因为

大道至简-第二章 心得体会

大道至简——是懒人造就了方法    心得体会 “ 僰道有蜀王兵蘭,亦有神作大潭江中.其崖崭峻不可破,(冰)乃积薪烧之.” ——<华阳国志> 从这段历史文献中我们可以看到,李冰同样是凿山但是他懂得方法,懂得怎样快速的破山凿山.这大概就是愚公和李冰的区别了(李冰是‘积薪烧之’而愚公是‘碎石击壤’)这两种方法的结果差距是很大的. 很明显李冰的方法更高级一点,那么问题来了,李冰为什么会找到这种方法而愚公没有找到呢?如果李冰也和愚公一样每天都忙东忙西“受命以来,夙夜忧叹”每天连吃饭的时间都没有,那他可以

android驱动开发第九章心得笔记

---恢复内容开始--- 第九章主要讲硬件抽象层:HAL,它是建立在Linux驱动之上的一套程序库.刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口.二,解决了GPL版权问题.三,针对一些特殊的要求.可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作. 下一个小节讲了Android HAL 架构.接下来讲了为led驱动增加HAL,主要是将所有的业务逻辑从LED驱动移到HAL模块,而LED驱动只保留读写寄存器的功能. 涉及的HAL步骤:1.编写Li