- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android驱动学习(举例分析)
Android 的硬件抽象层,简单来说,就是对Linux 内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把
对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在
用户空间,而Linux 内核驱动程序运行在内核空间。为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间
不可行吗?从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件的支持逻辑都放在内核空间,可能会损害
厂家的利益。我们知道,Linux 内核源代码版权遵循GNU License,而Android 源代码版权遵循Apache License,前者在发布产
品时,必须公布源代码,而后者无须发布源代码。如果把对硬件支持的所有代码都放在Linux 驱动层,那就意味着发布时要公
开驱动程序的源代码,而公开源代码就意味着把硬件的相关参数和实现都公开了,在手机市场竞争激烈的今天,这对厂家来
说,损害是非常大的。因此,Android 才会想到把对硬件的支持分成硬件抽象层和内核驱动层,内核驱动层只提供简单的访问
硬件逻辑,例如读写硬件寄存器的通道,至于从硬件中读到了什么值或者写了什么值到硬件中的逻辑,都放在硬件抽象层中
去了,这样就可以把商业秘密隐藏起来了。也正是由于这个分层的原因,Android 被踢出了Linux 内核主线代码树中。大家想
想,Android 放在内核空间的驱动程序对硬件的支持是不完整的,把Linux 内核移植到别的机器上去时,由于缺乏硬件抽象层
的支持,硬件就完全不能用了,这也是为什么说Android 是开放系统而不是开源系统的原因。撇开这些争论,学习Android 硬
件抽象层,对理解整个Android 整个系统,都是极其有用的,因为它从下到上涉及到了Android 系统的硬件驱动层、硬件抽象
层、运行时库和应用程序框架层等等,下面这个图阐述了硬件抽象层在Android 系统中的位置,以及它和其它层的关系:
在学习Android 硬件抽象层的过程中,我们将会学习如何在内核空间编写硬件
驱动程序、如何在硬件抽象层中添加接口支持访问硬件、如何在系统启动时
提供硬件访问服务以及 如何编写JNI 使得可以通过Java 接口来访问硬件,而
作为中间的一个小插曲,我们还将学习一下如何在Android 系统中添加一个C
可执行程序来访问硬件驱动程序。由于这是一个系统的学习过程,笔者将分
成六篇文章来描述每一个学习过程,包括:
一. 在Android 内核源代码工程中编写硬件驱动程序。
二. 在Android 系统中增加C 可执行程序来访问硬件驱动程序。
三. 在Android 硬件抽象层增加接口模块访问硬件驱动程序。
四. 在Android 系统中编写JNI 方法在应用程序框架层提供Java 接口访问硬件。
五. 在Android 系统的应用程序框架层增加硬件服务接口。
六. 在Android 系统中编写APP 通过应用程序框架层访问硬件服务。
学习完这六篇文章,相信大家对Android 系统就会有一个更深刻的认识了,敬请关注。
在Ubuntu 上为Android 系统编写Linux 内核驱动程序
这里,我们不会为真实的硬件设备编写内核驱动程序。为了方便描述为Android 系统编写内核驱动程序的过程,我们使用一
个虚拟的硬件设备,这个设备只有一个4 字节的寄存器,它可读可写。想起我们第一次学习程序语言时,都喜欢用“Hello, World”
作为例子,这里,我们就把这个虚拟的设备命名为“hello”,而这个内核驱动程序也命名为hello 驱动程序。其实,Android 内
核驱动程序和一般Linux 内核驱动程序的编写方法是一样的,都是以Linux 模块的形式实现的,具体可参考前面Android 学习
启动篇一文中提到的Linux Device Drivers 一书。不过,这里我们还是从Android 系统的角度来描述Android 内核驱动程序的编
写和编译过程。
一. 参照这两篇文章在Ubuntu 上下载、编译和安装Android 必威体育精装版源代码和在Ubuntu 上下载、编译和安装Android 必威体育精装版内核源
代码(Linux Kernel)准备好Android 内核驱动程序开发环境。
二. 进入到kernel/common/drivers 目录,新建hello 目录:
linuxidc@:~/Android$ cd kernel/common/drivers
linuxidc@:~/Android/kernel/common/drivers$ mkdir hello
三. 在hello 目录中增加hello.h 文件:
1.#ifndef _HELL
您可能关注的文档
- 43美容造型艺术课程标准20148.doc
- 4专题四光合作用呼吸作用蒸腾作用.doc
- 4人教版四年级语文上册生字拼音组词.doc
- 42现代社会调查方法(风笑天第四版)备考重点及课后习题.doc
- 4《近代西方资本主义政治制度的确立与发展.doc
- 4刷磨板生产线.doc
- 4建筑材料(设备)供货合同文本.doc
- 430课程设计报告-红外遥控小车完整版.docx
- 4砂石换填隐蔽工程.doc
- 4第七单元战后世界格局的演变.doc
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
最近下载
- 篮球进校园方案.pdf VIP
- CESA--2023-105《算力服务可信性评估规范》.pdf
- 部编版四年级语文上册《精卫填海》教材分析及相关素材.docx VIP
- 2024年共青团知识自测题库及答案.pdf VIP
- 环环相扣PPT立体图表.ppt
- 2024-2025学年八年级英语上学期期中考试(上海卷)(含解析)(牛津上海版).pdf VIP
- 药学专业知识一.pdf
- 湖北省武汉市洪山高级中学2024-2025学年高一上学期9月考试化学试卷.docx VIP
- 2024年公共卫生与预防医学继续教育平台“大学习”活动线上培训栏目考试题库(1392题).docx
- 地方标准审评工作细则.pdf VIP
文档评论(0)