本书第一章首先简单概要地介绍了关于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. AngularJS select中ngOptions用法详解

    AngularJS select中ngOptions用法详解   一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...

  2. iOS多线程

    关于iOS多线程 概述 这篇文章中,我不会说多线程是什么.线程和进程的区别.多线程有什么用,当然我也不会说什么是串行.什么是并行等问题,这些我们应该都知道的. 在 iOS 中其实目前有 4 套多线程方 ...

  3. 个人对JQuery Proxy()函数的理解

    转载至:http://www.cnblogs.com/acles/archive/2012/11/20/2779282.html JQuery.proxy(function,context): 使用c ...

  4. 日常积累之JSON.stringify和JSON.parse substr

    1.substr(start,len) 从字符串中读取内容,第一个参数是读取的首位置,如果为负数,则从末尾倒数计数. 第二个参数是要读取的长度. eg: var str = "silence ...

  5. ID3、C4.5、CART、RandomForest的原理

    决策树意义: 分类决策树模型是表示基于特征对实例进行分类的树形结构.决策树可以转换为一个if_then规则的集合,也可以看作是定义在特征空间划分上的类的条件概率分布. 它着眼于从一组无次序.无规则的样 ...

  6. 将 Tor socks 转换成 http 代理

    你可以通过不同的 Tor 工具来使用 Tor 服务,如 Tor 浏览器.Foxyproxy 和其它东西,像 wget 和 aria2 这样的下载管理器不能直接使用 Tor socks 开始匿名下载,因 ...

  7. VS2003"无法启动调试 没有正确安装调试器"的解决办法

    VS2003"无法启动调试 没有正确安装调试器"的解决方法 在用VS2003做项目的时候,经常调试程序,但是有时候回出现如下问题“无法启动调试,没有正确安装调试器,请运行安装程序或 ...

  8. Jquery弹窗效果

    1.主页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  9. [划分树] POJ 2104 K-th Number

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 51732   Accepted: 17722 Ca ...

  10. Java集合类学习笔记(Set集合)

    Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入. HashSet类的特点: 不能保证元素的排列顺序,顺 ...