本书第一章首先简单概要地介绍了关于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系统移植与驱动开发概述的更多相关文章

  1. 第一章Android系统移植与驱动开发概述--读书笔记

    以前,初步学习过嵌入式Linux驱动开发的基础课程,对于驱动开发可以说是有了一点点微末的基础吧.首先我们要对Android嵌入式系统有一个初步的认识,Android系统发展到今天已经具备了完善的架构. ...

  2. 第一章 Andorid系统移植与驱动开发概述 - 读书笔记

    Android驱动月考1 第一章 Andorid系统移植与驱动开发概述 - 读书笔记 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以 ...

  3. Android深度探索HAL和驱动开发(卷1) 第一章 Android系统移植和驱动开发

    由于Android是基于Linux内核的,因此,Android和其他Linux系统的核心部分差异非常小.然而不同版本的Android使用的Linux内核的版本有细微的差异,所以不同Android驱动可 ...

  4. 第一章:Android系统移植与驱动开发概述

    Android是基于Linux内核的,与Linux内核没有太大的区别,只是增加了一些自己独有的驱动,随着Android发布版本的不断升级,他所使用的Linux内核也在不断升级,以适应新的安卓版本,为他 ...

  5. Android系统移植与驱动开发----第一章

    第一章 Android系统移植与驱动开发 Android源代码定制完全属于自己的嵌入式系统,但是支持的设备不多,所以要移植,而在移植的过程中使用的不得不提的是驱动开发. Android系统构架主要包括 ...

  6. Android 系统移植与驱动开发--第二章搭建Android环境核心步骤及心得

    第二章 搭建Android 开发环境 虽然在这一章中讲的是Android底层开发环境,但是相应伴随的还有Android NDK程序来测试Linux驱动,HAL程序库.底层开发不仅需要交叉编译环境,还要 ...

  7. Android系统移植与驱动开发

    21世纪,Android发展非常迅速,在市场上占有很大的比例,遥遥领先与iOS,很大程度上是因为任何人都可以利用Android的源代码定制完全属于自己的嵌入式开发系统,而不需要向Google交一分钱. ...

  8. 1Android系统移植与驱动开发概述

    1.Android系统架构分为四层,从下至上依次为Linux内核层,C/C++代码库.Android SDK API.应用程序,要熟悉每一层的内容以及功能: 2.Android移植分为应用移植和系统移 ...

  9. Android系统移植与驱动开发--第四章

    第四章 源代码的下载和编译 一个android内核相当于4G,而一个Linux内个只有几百M,Linux内核相对于android内核来说实在是小巫见大巫.了解android源代码不一定要详细了解,只去 ...

随机推荐

  1. [WPF]DataGridHyperlinkColumn网址过长TextTrimming无效

    <DataGridHyperlinkColumn Binding="{Binding source}" Header="来源"> <DataG ...

  2. CSS3--overflow属性

    overflow:当内容溢出元素框时发生的事情: overflow:默认,内容不会裁剪,会呈现在元素框之外: overflow:hidden:内容会被裁剪,并且其余部分是不可见的(清除浮动) over ...

  3. SQLServer解析xml到Oracle

    写了一个程序:根据状态位读取SQLserver 中的一张表,下载其中一个字段的值,这个值是XML类型的,然后把这个XML文件的内容插入到另一Oracle数据库,并更新SQLServer表的标志位,表示 ...

  4. 关于BP网络的一些总结

    背景 前段时间,用过一些模型如vgg,lexnet,用于做监督学习训练,顺带深入的学习了一下相关模型的结构&原理,对于它的反向传播算法记忆比较深刻, 就自己的理解来描述一下BP网络. 关于BP ...

  5. asp.net "true"的小坑

    在cs文件中 写了一个 属性 protected bool IsTrue { get{ return true; } } 在页面 .aspx文件中 在js中 var flag="<%= ...

  6. 学习PYTHON之路, DAY 7 - PYTHON 基础 7 (面向对象基础)

    面向对象三大特性 一.封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容. 所以,在使用面向对象的封装特性时,需要: 将内容封装到某处 从某处调用被封装的内容 第一步:将内容 ...

  7. Node.js EventEmitter(事件队列)

    Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列. Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.read ...

  8. Datafactory必须注意事项

  9. fileupload图片预览功能

    FileUpload上传图片前首先预览一下 看看效果: 在专案中,创建aspx页面,拉上FileUpload控件一个Image,将用来预览上传时的图片. <%@ Page Language=&q ...

  10. JVM 平台上的各种语言的开发指南

    JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...