新書推薦:
《
德国天才4:断裂与承续
》
售價:NT$
500.0
《
妈妈的情绪,决定孩子的未来
》
售價:NT$
194.0
《
推拿纲目
》
售價:NT$
1836.0
《
精致考古--山东大学实验室考古项目论文集(一)
》
售價:NT$
1112.0
《
从天下到世界——国际法与晚清中国的主权意识
》
售價:NT$
347.0
《
血色帝国:近代英国社会与美洲移民
》
售價:NT$
265.0
《
海外中国研究·王羲之:六朝贵族的世界(艺术系列)
》
售價:NT$
811.0
《
唐宋绘画史 全彩插图版
》
售價:NT$
449.0
|
編輯推薦: |
本书的目的是要为开发者提供切实有效的帮助。针对开发者的现实情况,本书主要具有以下几个特点:
用框图描述每一个硬件相关子系统的结构,并区分BSP部分和公用部分。
选用多个流行的硬件平台,对比其中不同的实现和相同的理念。
对比Android 2.3和Android 4.x的实现,展示硬件相关部分的升级。
对庞大的系统去耦合,展示Android一些原始的核心设计思路。
列出每一个部分相关的代码路径。
简要列出代码的关键部分。
根据实际经验编写,工程性强。
|
內容簡介: |
本书以硬件相关的子系统为核心,提供具有完整知识体系Android系统级的开发知识。本书选定了几个流行的硬件作为参考平台,读者可以很容易地得到硬件和开源代码。本书突出了硬件相关的子系统的特点,展示了几个不同的硬件平台的内核结构,介绍了每个子系统的总体结构和BSP结构、每个子系统的BSP的实现要点,以及具体硬件在Linux内核与Android硬件抽象层相关的实现。
本书适用于各类Android技术群体,也适用于嵌入式Linux的技术人员了解实际系统。作者根据丰富的开发经验和对Android系统发展5年的总结完成本书,希望为Android系统的开发者和学习者提供切实有效的帮助。
|
目錄:
|
第1章 Android的BSP和子系统开发
1.1 Android板级支持工作概述
1.1.1 Android的开放源代码工程和BSP
1.1.2 Android的系统结构
1.2 Android的开发环境和源代码
1.2.1 Android的开发环境
1.2.2 源代码仓库
1.3 BSP模块和相关子系统
1.3.1 Android的BSP
1.3.2 BSP和硬件相关子系统
1.3.3 不同类型的Android设备
第2章 Android系统BSP部分工作
2.1 Android的BSP部分工作概述
2.2 BSP的全局部分
2.2.1 源代码工程板级别支持部分
2.2.2 硬件相关的代码改动
2.3 Android的Linux操作系统
2.3.1 Android中的Linux操作系统的特定内容
2.3.2 Android的Linux的基本支持
2.3.3 Android各个硬件设备的驱动程序
2.4 Android的硬件抽象层
2.4.1 硬件抽象层的地位和功能
2.4.2 硬件抽象层接口方式
2.5 各个子系统的移植方式
2.5.1 Android 2.3中的实现方式
2.5.2 Android 2.2及之前的实现方式
2.5.3 Android 4.x中的实现方式
2.6 与硬件抽象层相关的框架层目录
2.6.1 一直保持不变的代码
2.6.2 框架层的本地代码
2.6.3 音频视频相关的代码
第3章 Android的Linux内核和驱动
3.1 Android的Linux内核概述
3.1.1 几个内核工程
3.1.2 内核工程的编译工具链
3.1.3 用户空间关注的内容
3.2 Android专用驱动和组件
3.2.1 电源管理部分
3.2.2 staging中的组件和驱动程序
3.2.3 几个主要核心模块
3.2.4 辅助的模块和改动
3.3 goldfish平台的内核和驱动
3.3.1 goldfish平台和内核概述
3.3.2 goldfish体系结构移植
3.3.3 goldfish的相关设备驱动
3.4 高通MSM平台的内核和驱动
3.4.1 平台概述
3.4.2 体系结构移植
3.4.3 设备驱动程序
3.5 三星平台的内核和驱动
3.5.1 平台概述
3.5.2 体系结构移植
3.5.3 驱动程序部分
3.6 德州仪器OMAP平台的内核和驱动
3.6.1 平台概述
3.6.2 体系结构移植
3.6.3 驱动程序部分
第4章 显示系统
4.1 显示系统概述
4.2 显示子系统结构
4.2.1 总体结构
4.2.2 核心结构和UI库
4.2.3 Surface本地部分
4.2.4 Java层的Surface的处理
4.3 显示BSP的结构
4.3.1 Framebuffer驱动程序
4.3.2 gralloc硬件抽象层
4.4 显示BSP的实现
4.4.1 模拟器显示系统的实现
4.4.2 Nexus One系统的实现
4.4.3 Nexus S系统的实现
4.4.4 Galaxy Nexus系统的实现
第5章 用户输入系统
5.1 用户输入系统概述
5.2 Android 2.3用户输入子系统
5.2.1 总体结构
5.2.2 本地框架的几个部分
5.2.3 JNI
5.2.4 Java层的部分
5.3 Android 4.2的用户输入子系统结构
5.3.1 总体结构
5.3.2 InputManagerService的实现
5.4 用户输入BSP的结构
5.4.1 Input驱动程序
5.4.2 输入配置文件
5.5 用户输入BSP的实现
5.5.1 模拟器中的实现
5.5.2 Nexus One系统中的实现
5.5.3 Nexus S系统中的实现
5.5.4 Galaxy Nexus系统中的实现
第6章 传感器系统
6.1 传感器系统概述
6.2 传感器子系统的结构
6.2.1 总体结构
6.2.2 本地框架层
6.2.3 传感器系统的JNI
6.2.4 传感器系统的Java层
6.3 传感器BSP的结构
6.3.1 驱动程序
6.3.2 硬件抽象层的内容
6.4 传感器BSP的实现
6.4.1 仿真器的实现
6.4.2 Nexus One系统实现
6.4.3 Nexus S系统实现
6.4.4 Galaxy Nexus系统实现
第7章 音频系统
7.1 音频系统概述
7.2 音频子系统结构
7.2.1 总体结构
7.2.2 Audio的本地框架层
7.2.3 Audio系统的JNI和Java层
7.3 音频BSP的结构
7.3.1 Audio驱动程序
7.3.2 硬件抽象层的内容
7.4 音频BSP的实现
7.4.1 通用的Audio系统实现
7.4.2 基于OSS的实现方式
7.4.3 基于ALSA的实现方式
7.4.4 MSM平台和Nexus One系统的实现
7.4.5 Nexus S系统的实现
第8章 视频叠加输出系统
8.1 视频叠加输出系统概述
8.2 视频输出子系统的结构
8.2.1 Overlay系统的结构
8.2.2 本地框架层
8.3 视频叠加输出BSP结构
8.3.1 移植的内容
8.3.2 驱动程序
8.3.3 硬件抽象层的内容
8.3.4 视频输出的调用者
8.3.5 使用Overlay的数据流情况
8.4 视频输出BSP的实现
8.4.1 骨架实现
8.4.2 OMAP系统的实现
8.4.3 Nexus S系统的实现
第9章 照相机系统
9.1 照相机系统概述
9.2 照相机子系统的结构
9.2.1 照相机系统的结构
9.2.2 Camera的本地层
9.2.3 Camera的JNI和Java层
9.3 照相机BSP的结构
9.3.1 移植的内容
9.3.2 Video for 4 Linux驱动程序
9.3.3 硬件抽象层的内容
9.3.4 照相机系统上下层的关系
9.4 照相机BSP的实现
9.4.1 桩实现
9.4.2 Nexus One系统的Camera实现
9.4.3 Nexus S系统的Camera实现
第10章 OpenGL 3D引擎
10.1 OpenGL系统概述
10.2 OpenGL系统的结构
10.2.1 OpenGL和OpenGL ES的标准结构
10.2.2 总体结构
10.2.3 OpenGL库的调用者
10.3 OpenGL BSP的结构
10.3.1 移植的内容
10.3.2 OpenGL移植层的接口
10.3.3 OpenGL的调用和测试
10.4 OpenGL BSP的实现
10.4.1 Android软件OpenGL的实现
10.4.2 Nexus One系统的实现
10.4.3 Nexus S系统的实现
10.4.4 Galaxy Nexus系统的实现
第11章 OpenMax引擎
11.1 OpenMax系统概述
11.2 OpenMax子系统结构
11.2.1 OpenMax系统的结构
11.2.2 Android中OpenMax的适配层
11.3 OpenMax BSP的结构
11.3.1 OpenMax IL层的接口
11.3.2 Android的OpenMax
11.4 OpenMax BSP的实现
11.4.1 OpenMax IL实现的内容
11.4.2 OMAP3的OpenMax IL实现的结构和机制
11.4.3 OMAP4的OpenMax IL实现
第12章 位块复制
12.1 位块复制概述
12.2 位块复制子系统结构
12.2.1 总体结构
12.2.2 copybit的调用者
12.3 位块复制BSP的结构
12.3.1 驱动程序
12.3.2 硬件抽象层的接口
12.3.3 实现硬件抽象层
12.4 位块复制的实现
第13章 无线局域网系统
13.1 无线局域网系统概述
13.2 无线局域网子系统的结构
13.2.1 总体的结构
13.2.2 wpa_supplicant工程
13.2.3 WiFi本地适配库
13.2.4 WiFi的JNI部分
13.2.5 WiFi的Java层
13.3 无线局域网BSP的结构
13.3.1 协议和驱动程序
13.3.2 用户空间的内容
13.4 无线局域网BSP的实现
13.4.1 基于BCM4329的方案(Nexus One和Nexus S)
13.4.2 OMAP平台的一个典型实现
13.4.3 Galaxy Nexus的实现
第14章 蓝牙系统
14.1 蓝牙系统概述
14.2 蓝牙子系统的结构
14.2.1 蓝牙系统的结构
14.2.2 BlueZ
14.2.3 bluedroid库
14.2.4 蓝牙的JNI部分
14.2.5 蓝牙的Java部分
14.3 BSP的结构
14.3.1 协议和驱动程序
14.3.2 本地代码的配置部分
14.4 Android 4.2的蓝牙系统
14.4.1 系统结构
14.4.2 蓝牙硬件模块
14.4.3 蓝牙系统的本地层部分
14.4.4 BlueTooth包
14.5 BSP的实现
14.5.1 Nexus One系统的蓝牙实现
14.5.2 Nexus S系统的蓝牙实现
14.5.3 Galaxy Nexus系统的蓝牙实现
第15章 定位系统
15.1 定位系统的概述
15.2 定位子系统的结构
15.2.1 总体结构
15.2.2 JNI部分
15.2.3 Java部分
15.3 定位BSP的结构
15.3.1 驱动程序
15.3.2 硬件抽象层的接口
15.3.3 实现硬件抽象层
15.4 定位BSP的实现
15.4.1 仿真器的GPS实现
15.4.2 Nexus One系统的实现
15.4.3 Nexus S系统的实现
15.4.4 Galaxy Nexus系统的实现
第16章 电话系统
16.1 电话系统概述
16.2 电话子系统的结构
16.2.1 总体结构
16.2.2 rild层
16.2.3 Java层中的电话部分
16.3 电话BSP的结构
16.3.1 驱动程序
16.3.2 RIL实现库接口(作为硬件抽象层)
16.4 电话BSP部分的实现
16.4.1 RIL的参考实现
16.4.2 数据连接部分
16.4.3 Mock RIL
第17章 警报器—实时时钟系统
17.1 警报器—实时时钟系统
17.2 警报器—实时时钟子系统的结构
17.2.1 总体结构
17.2.2 JNI部分
17.2.3 Java部分
17.2.4 Android系统时间方面的调用
17.3 警报器—实时时钟BSP部分的结构
17.3.1 RTC驱动程序
17.3.2 Alarm驱动程序
17.4 警报器—实时时钟BSP部分的实现
17.4.1 模拟器环境中的实现
17.4.2 MSM平台和Nexus One系统的实现
17.4.3 Nexus S系统的实现
17.4.4 Galaxy Nexus系统的实现
第18章 光系统
18.1 光系统概述
18.2 背光和指示灯子系统的结构
18.2.1 总体结构
18.2.2 JNI部分
18.2.3 Java服务部分和调用部分
18.3 背光和指示灯BSP部分的结构
18.3.1 驱动程序
18.3.2 硬件抽象层的内容
18.4 背光和指示灯BSP部分的实现
18.4.1 Nexus One系统的实现
18.4.2 Nexus S系统的实现
18.4.3 Galaxy Nexus 系统的实现
第19章 振动器系统
19.1 振动器系统概述
19.2 振动器子系统的结构
19.2.1 振动器部分的结构
19.2.2 JNI部分
19.2.3 Java框架部分
19.3 振动器BSP部分的结构
19.3.1 驱动程序
19.3.2 硬件抽象层的内容
19.4 振动器BSP部分的实现
19.4.1 Nexus One系统的实现
19.4.2 Nexus S系统的实现
19.4.3 Galaxy Nexus
第20章 电池信息部分
20.1 电池信息部分
20.2 电池信息子系统的结构
20.2.1 电池系统部分的结构
20.2.2 JNI部分
20.2.3 Java部分
20.3 电池信息BSP部分的结构
20.4 电池信息BSP部分的实现
20.4.1 模拟器中的实现
20.4.2 Nexus One
20.4.3 Nexus S
20.4.4 Galaxy Nexus
第21章 Android 4.x的音频、视频系统
21.1 Android 4.x的音频系统
21.1.1 音频系统的结构
21.1.2 音频框架层
21.1.3 音频BSP部分结构
21.2 Android 4.x音频的BSP实现
21.2.1 主实现和策略实现
21.2.2 仿真器实现
21.2.3 A2DP实现
21.2.4 Galaxy Nexus的实现
21.3 Android 4.x照相机系统
21.3.1 照相机系统的结构
21.3.2 Camera的框架层
21.3.3 照相机BSP部分结构
21.4 Android 4.x照相机的BSP实现
21.4.1 仿真器实现
21.4.2 Galaxy Nexus的实现
21.5 Android 4.x视频组合系统
21.5.1 视频组合系统结构
21.5.2 SurfaceFlinger对视频组合的使用
21.5.3 视频组合BSP部分结构
21.6 Android 4.x视频组合的BSP实现
21.6.1 默认实现
21.6.2 Galaxy Nexus的视频组合
第22章 Android 4.x近场通信系统
22.1 近场通信系统概述
22.2 近场通信子系统的结构
22.2.1 总体结构
22.2.2 NFC本地库
22.2.3 Android框架层的NFC相关内容
22.2.4 NFC包
22.3 近场通信BSP的结构
22.3.1 NFC-NCI接口
22.3.2 NFC接口
22.4 近场通信BSP的实现
22.4.1 NCI-NFC的桩实现
22.4.2 NFC的桩实现
22.4.3 Galaxy Nexus 的NFC实现
第23章 Android 4.2的电源控制
23.1 电源控制
23.2 电源控制的结构
23.2.1 总体结构
23.2.2 电源控制的使用
23.3 电源控制BSP的结构
23.4 电源控制BSP的实现
23.4.1 通用的电源控制实现
23.4.2 Galaxy Nexus的电源控制实现
第24章 本地时间
24.1 本地时间子系统结构
24.1.1 本地时间的结构
24.1.2 本地时间的使用
24.2 本地时间BSP的结构
24.3 本地时间BSP的实现
第25章 Android 4.2密钥
25.1 密钥概述
25.2 安全和密钥子系统结构
25.2.1 安全和密钥的总体结构
25.2.2 keystore守护进程
25.2.3 android.security的内容
25.3 密钥的BSP部分的结构
25.4 密钥的BSP实现
25.4.1 通用的软件密钥实现
25.4.2 Galaxy Nexus 的密钥实现
第26章 电源管理
26.1 Android电源管理
26.2 Android内核空间的电源管理
26.2.1 总体结构
26.2.2 wakelock
26.2.3 wakelock的用户空间
26.2.4 earlysuspend部分
26.2.5 其他
26.3 Android用户空间的电源管理
26.3.1 电源管理的本地库
26.3.2 电源管理的JNI库
26.3.3 电源管理的Java部分
26.4 电源管理的策略
26.4.1 驱动程序的变化
26.4.2 用户空间的控制
第27章 恢复和升级
27.1 恢复和升级概述
27.1.1 Android的Recovery系统的组成
27.1.2 Android的Recovery系统的功能和运行流程
27.2 recovery系统
27.2.1 编译系统
27.2.2 init.rc脚本
27.2.3 Recovery可执行程序和相关的库
27.3 Android系统交互的过程
27.3.1 Java部分
27.3.2 交互的场景
|
內容試閱:
|
开发者的需要
Android系统已经推出了将近5个年头了,从1.0版本一直到本书写作时的4.2版本。作为其载体的硬件也经过了多次升级。到今天,Android设备已经成为硬件的集大成者。硬件方面的开发一直是开发的难点,凡是一个完整Android设备的开发者,无论处于产业链的哪一个阶段,都不可避免地要处理与硬件相关的问题。
Android的开发者通常面对几个方面的难点:
Android系统的代码庞大,难以把握硬件相关的调试思路。
不清楚软件和硬件之间的直接关系。
对某个硬件平台的知识和经验不适用于其他硬件平台。
Android系统的版本升级过程中,与硬件相关的部分常常发生重大变动。
另外一个客观的情况是,目前一般处理器或者基本硬件平台的BSP(Board Support
Package,板级支持包)部分都是由芯片的厂商统一完成的,并且已经趋近于成熟。因此,开发者的主要工作不再是构建完整的BSP,而是调试和修改现有的BSP。
本书特色
本书的目的是要为开发者提供切实有效的帮助。针对开发者的现实情况,本书主要具有以下几个特点:
用框图描述每一个硬件相关子系统的结构,并区分BSP部分和公用部分。
选用多个流行的硬件平台,对比其中不同的实现和相同的理念。
对比Android 2.3和Android 4.x的实现,展示硬件相关部分的升级。
对庞大的系统去耦合,展示Android一些原始的核心设计思路。
列出每一个部分相关的代码路径。
简要列出代码的关键部分。
根据实际经验编写,工程性强。
通过对每一个子系统的学习,读者可以了解现有Android系统的结构,经过深入理解后,可以明白Android系统的设计思路。学习后,如果要在系统中增加一个新的非标准硬件,读者也能比较容易地完成。
本书特别选定了Nexus One、Nexus S、Galaxy
Nexus等几款手机作为参考平台。其中一个很大的优点就是以上几个平台都是Google认定的,具有典型性,并且它们从内核到Android系统的代码都是开源的,读者可以很容易获得。虽然以上几个硬件平台不是最新的,但是根据嵌入式SOC的特点,高通的处理器都与Nexus
One的QSD 8x处理器类似,三星的处理器都与Nexus S的Exynos处理器类似,德州仪器的处理器都与Galaxy Nexus
的OMAP处理器类似。因此,这样的选择既方便又具有广泛的适应性,当读者熟悉了这几个硬件平台后,置于Marvel、Freescale和NVidia等公司的平台可以实现融会贯通。
Android系统可以被视为一个功能完备的机器人。其中与硬件相关的BSP部分,则是这个机器人的根基和经脉,虽然占的比重不大,却是系统的关键所在。
本书的理念可以用下面的图来表示。
本书内容
本书提供了系统化的Android系统的开发知识,以硬件相关的子系统为核心,主要包括以下几个方面的内容:
硬件相关的子系统的特点。
几个不同的硬件平台的Linux内核结构。
每个子系统的总体结构和BSP结构。
每个子系统的BSP的实现要点。
具体硬件在Linux内核与Android硬件抽象层相关的实现。
人的知识和经验本身是网状结构,各部分相互关联,错综复杂。但是作为出版的书籍,则必须将其串行成章节的形式,本书总体上是以横向结构来进行组织的,大部分章节是针对每一个硬件相关子系统的描述,每一章的组织结构也比较类似。
本书读者
本书适用于各类Android技术群体,也适用于嵌入式Linux的技术人员了解实际系统。作者对读者有以下几个方面的建议:
根据书中提供的知识和经验,对照Android的源代码,有相应的Android设备,这三者的结合是最理想的学习环境。
要首先理解宏观结构,再研究细枝末节,硬件相关子系统的很多代码并非在任何情况下都会适用,读者需要了解其适用的场景。
BSP部分的开发偏重下层,读者不要过于依赖界面,而要习惯查看系统日志,从Linux系统标准的设备和特殊文件系统中获取信息,并使用各种命令行工具调试。
硬件抽象层的目的是为了适配各种硬件,很多程序的结构看似冗余,却正是BSP设计的精华所在,这也是读者需要关注的内容。
夯实Linux的基础对Android开发也非常重要,对Android的BSP开发尤为重要。
在开发的过程中,可能用到很多不同的硬件平台,要根据本书的思路掌握查看硬件信息和硬件相关代码的方法。
本书作者
本书的规划和统筹由中国大陆的韩超完成,韩超在Linux和Android领域具有丰富的一线开发经验。本书内容来源于工作在不同领域的开发者多年的经验。韩超完成了本书内容的主要部分,众多不同规模的企业开发成果也为本书的编写提供了重要的素材。参与本书编写的还有崔海斌、于仕林、张宇、张超、赵家维、黄亮、沈桢、徐威特、杨钰、马若劼、曹道刚、梁泉等。
|
|