第一章 Android系统移植与驱动开发概述
本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容。
所谓“移植”是指为特定的自己的设备,如手机定制Android的过程。自己开发一些程序(移植)装载在设备上,使得Android系统可以识别设备中的蓝牙,WiFi等,这样就可以使用这些功能了。这些程序大多是支持各种硬件设备的Linux驱动程序。
这一章中介绍了许多在进行Android系统移植和驱动开发前要了解的概念以及要做的准备。接下来主要说的是在Android系统移植过程中的主要工作。
Android移植分为两部分:应用移植和系统移植。
应用移植指将第四层的应用程序移植到某一特定硬件平台上。为了使应用程序可以在新的硬件平台上正常运行,需对源代码进行一些修改。没有源代码只能重新实现,应用移植并不涉及驱动和HAL(hardware abstraction layer-android的硬件抽象层)程序库的移植。
Android系统移植是指让Android操作系统在特定硬件平台上运行,首要条件是该操作系统支持硬件平台的CPU架构。Linux内核支持很多常用的CPU架构,如ARM、PowerPC。要使Android在不同硬件平台上正常运行,不仅要支持CPU架构,还要让Android可以识别平台上的各种硬件,蓝牙、声卡等。这些都由Linux内核完成,重要的就是Linux驱动。系统移植要移植CPU架构,还要移植Linux驱动程序。修改驱动程序使得Linux内核与新设备模块可正常交互,工作起来。
HAL位于系统架构第二层,也是Linux程序库,Android SDK(第三层)通过HAL直接访问Linux驱动。其他Linux系统是由应用程序直接访问驱动,而Android是要有HAL作为中介,这样设计的原因是Linux内核是基于GPL开源协议的,但很多驱动厂商不想开放源代码让其他人所知道,就增加了HAL层,将Linux驱动的业务逻辑放在HAL层,处理Linux驱动开源技术就是个空架子。为Android增加或修改了原来的驱动代码,相应的HAL代码也要做修改。
Android移植有两部分:①移植Linux驱动②移植HAL 基本就是Linux内核的移植,主要移植驱动程序
如果要移植的Android系统提供了驱动源代码,直接根据移植的目标平台修改驱动代码即可。但更多的是无法获得驱动源代码或要实现的驱动程序所对应的硬件是自己特有的,就需要从头自己编写驱动程序以及相关配置文件。Android的移植是要尽可能找到驱动和HAL的源代码,直接修改这样比从头开始编写要容易得多。不过驱动和HAL的代码量不是很大。不同Linux版本的驱动程序不能通用,需重新修改源代码,并在新的Linux内核下重新编译才可以在新的Linux内核版本下运行新的驱动程序。Android开放源代码,即使同一个Android版本,Linux的内核也可能不同,因为有自制的ROM会更换不同的Linux内核,就和官方的Android对应的Linux内核不同。移植Linux驱动时主要考虑Linux内核版本,即使Android版本不同,只要Linux内核版本相同,Linux驱动就可以互相替换,有时还需考虑HAL是否和Linux驱动兼容。
第一章 Android系统移植与驱动开发概述的更多相关文章
- 第一章Android系统移植与驱动开发概述--读书笔记
以前,初步学习过嵌入式Linux驱动开发的基础课程,对于驱动开发可以说是有了一点点微末的基础吧.首先我们要对Android嵌入式系统有一个初步的认识,Android系统发展到今天已经具备了完善的架构. ...
- 第一章 Andorid系统移植与驱动开发概述 - 读书笔记
Android驱动月考1 第一章 Andorid系统移植与驱动开发概述 - 读书笔记 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以 ...
- Android深度探索HAL和驱动开发(卷1) 第一章 Android系统移植和驱动开发
由于Android是基于Linux内核的,因此,Android和其他Linux系统的核心部分差异非常小.然而不同版本的Android使用的Linux内核的版本有细微的差异,所以不同Android驱动可 ...
- 第一章:Android系统移植与驱动开发概述
Android是基于Linux内核的,与Linux内核没有太大的区别,只是增加了一些自己独有的驱动,随着Android发布版本的不断升级,他所使用的Linux内核也在不断升级,以适应新的安卓版本,为他 ...
- Android系统移植与驱动开发----第一章
第一章 Android系统移植与驱动开发 Android源代码定制完全属于自己的嵌入式系统,但是支持的设备不多,所以要移植,而在移植的过程中使用的不得不提的是驱动开发. Android系统构架主要包括 ...
- Android 系统移植与驱动开发--第二章搭建Android环境核心步骤及心得
第二章 搭建Android 开发环境 虽然在这一章中讲的是Android底层开发环境,但是相应伴随的还有Android NDK程序来测试Linux驱动,HAL程序库.底层开发不仅需要交叉编译环境,还要 ...
- Android系统移植与驱动开发
21世纪,Android发展非常迅速,在市场上占有很大的比例,遥遥领先与iOS,很大程度上是因为任何人都可以利用Android的源代码定制完全属于自己的嵌入式开发系统,而不需要向Google交一分钱. ...
- 1Android系统移植与驱动开发概述
1.Android系统架构分为四层,从下至上依次为Linux内核层,C/C++代码库.Android SDK API.应用程序,要熟悉每一层的内容以及功能: 2.Android移植分为应用移植和系统移 ...
- Android系统移植与驱动开发--第四章
第四章 源代码的下载和编译 一个android内核相当于4G,而一个Linux内个只有几百M,Linux内核相对于android内核来说实在是小巫见大巫.了解android源代码不一定要详细了解,只去 ...
随机推荐
- java数据库连接池技术原理(浅析)
在执行数据库SQL语句时,我们先要进行数据连接:而每次创建新的数据库的连接要消耗大量的资源,这样,大家就想出了数据库连接池技术.它的原理是,在运行过程中,同时打开着一定数量的数据库连接,形成数据连接池 ...
- SPSS数据分析—因子分析
我们知道主成分分析是一种降维方法,但是其本质上只是一种矩阵变换的过程,提取出来的主成分并不都具有实际含义,而这种含义往往是我们所需要的,接下来的因子分析可以解决这个问题 因子分析可以看做是主成分分析的 ...
- Hexo+Github 高逼格个人博客搭建指南(准备篇)
git 下载并安装git 进入git下载页面,下载合适的版本,并安装.一路 Next ,到了 Select Components 界面,勾选 Git Bash Here 和 Git GUI Here. ...
- Web APP开发技巧总结(转)
一.META/LINK相关: 1.百度禁止转码 通过百度手机打开网页时,百度可能会对你的网页进行转码,往你页面贴上它的广告,非常之恶心.不过我们可以通过这个meta标签来禁止它: <meta h ...
- Java: RandomAccessFile
RandeomAccessFile虽然是java.io中的成员,但该类只继承了Object类,实现了DataOut, DataIn, Closeable等接口.此类的实例支持对文件的随机访问和读取.随 ...
- jquery中链式调用原理
(1).链式调用 $("#mybtn").css("width","100px") .css("height",&quo ...
- C#微信公众号接口开发,灵活利用网页授权、带参数二维码、模板消息,提升用户体验之完成用户绑定个人微信及验证码获取
一.前言 当下微信公众号几乎已经是每个公司必备的,但是大部分微信公众账号用户体验都欠佳,特别是涉及到用户绑定等,需要用户进行复杂的操作才可以和网站绑定,或者很多公司直接不绑定,而是每次都让用户填写账号 ...
- asp.net网站运行出错:the underlying provider failed on open的解决
在登录系统,通过linq查询时发生错误,the underlying provider failed on open,如何解决,请看: Step 1:Open Internet Information ...
- jQuery设置聚焦并使光标位置在文字最后
var editor = document.getElementById('btn'); editor.onfocus = function () { window.setTimeout(functi ...
- 【图像处理】【SEED-VPM】4.串口调试信息
—————————————————————————————————————————————————————————————————————— 串口返回正确的信息 Booting PSP Boot Lo ...