第1章 Android系统移植开发概述 1
1.1 Android系统架构和生态系统 1
1.1.1 Android软件系统 1
1.1.2 Android的生态系统 3
1.2 Android移植的概念和方法 4
1.3 Android移植的主要工作 5
第2章 Android源代码和开发环境 8
2.1 开发环境和工具 8
2.2 Android的代码库 9
2.3 Android系统代码和编译 9
2.3.1 获取Android源代码 9
2.3.2 Android源代码结构 12
2.3.3 编译Android系统源代码 13
2.3.4 编译Android结果 13
2.4 Android Kernel代码和编译 14
2.4.1 Goldfish内核源代码 15
2.4.2 MSM内核源代码 15
2.4.3 Omap内核源代码 16
2.5 仿真器的运行环境 16
2.5.1 仿真器的运行 16
2.5.2 使用附加工具 18
第3章 Android系统移植的结构和方法 20
3.1 Android的Linux操作系统 20
3.1.1 标准的Linux操作系统 20
3.1.2 Android对Linux 内核的使用 22
3.1.3 Linux内核空间到用户空间的接口 24
3.1.4 平台数据和平台驱动 34
3.2 Android的硬件抽象层 35
3.2.1 硬件抽象层的地位和功能 35
3.2.2 硬件抽象层接口方式 36
3.3 Android中各个部件的移植方式 41
3.4 辅助性工作和基本调试方法 41
3.4.1 移植的辅助性工作 42
3.4.2 调试的方法 46
第4章 Android的GoldFish内核和驱动 56
4.1 GoldFish内核概述 56
4.2 GoldFish体系结构移植 58
4.3 GoldFish的Android专用驱动和组件 59
4.3.1 wakelock和earlysuspend 59
4.3.2 staging中的驱动程序 61
4.3.3 Ashmem驱动程序 66
4.3.4 Alarm驱动程序 67
4.3.5 pmem驱动程序 67
4.3.6 ADB Garget驱动程序 68
4.3.7 Android Paranoid网络 68
4.4 GoldFish的相关设备驱动 70
4.4.1 Framebuffer的驱动程序 70
4.4.2 键盘的驱动程序 70
4.4.3 实时时钟的驱动程序 71
4.4.4 TTY终端的驱动程序 71
4.4.5 NandFlash的驱动程序 72
4.4.6 MMC的驱动程序 72
4.4.7 电池的驱动程序 73
4.4.8 EAC音频的驱动程序 73
第5章 Android的MSM内核和驱动 74
5.1 MSM处理器概述 74
5.1.1 MSM概述 74
5.1.2 MSM适用于Android的Linux内核的结构 77
5.2 MSM体系结构的移植 79
5.3 MSM的Android专用驱动和组件 80
5.4 MSM的mahimahip平台的主要设备驱动 81
5.4.1 显示的驱动程序 81
5.4.2 触摸屏的驱动程序 82
5.4.3 按键和轨迹球的驱动程序 82
5.4.4 实时时钟的驱动程序 83
5.4.5 摄像头的驱动程序 83
5.4.6 无线局域网的驱动程序 83
5.4.7 蓝牙的驱动程序 84
5.4.8 DSP相关的驱动程序 84
5.4.9 高通特有的组件相关内容 85
第6章 Android的OMAP内核和驱动 87
6.1 OMAP内核概述 87
6.1.1 OMAP概述 87
6.1.2 OMAP适用于Android的Linux内核的结构 91
6.2 OMAP体系结构的移植 92
6.2.1 OMAP平台部分的移植 92
6.2.2 OMAP处理器部分的移植 94
6.3 OMAP的Android专用驱动和组件 96
6.4 OMAP的主要设备驱动 97
6.4.1 显示的驱动程序 97
6.4.2 摄像头和视频输出的驱动程序 98
6.4.3 i2c总线驱动程序 98
6.4.4 键盘的驱动程序 99
6.4.5 触摸屏的驱动程序 99
6.4.6 实时时钟的驱动程序 99
6.4.7 音频的驱动程序 99
6.4.8 蓝牙的驱动程序 100
6.4.9 以太网的驱动程序 100
6.4.10 DSP的驱动程序 100
第7章 显示系统 101
7.1 显示系统结构和移植内容 101
7.1.1 Donut及其之前显示系统的结构 102
7.1.2 Eclair及其之后显示系统的结构 102
7.1.3 移植的内容 103
7.2 移植和调试的要点 104
7.2.1 Framebuffer驱动程序 104
7.2.2 Donut及其之前的硬件抽象层 106
7.2.3 Eclair及其之后的硬件抽象层 107
7.3 显示部分模拟器的实现方式 112
7.3.1 Goldfish的framebuffer驱动程序 112
7.3.2 默认的Gralloc模块的实现 113
7.4 MSM中的实现 119
7.4.1 MSM的framebuffer驱动程序 119
7.4.2 MSM的Gralloc模块的实现 120
7.5 OMAP中的实现 126
7.5.1 OMAP的framebuffer驱动程序 126
7.5.2 OMAP的用户空间的实现 128
第8章 用户输入系统 129
8.1 用户输入系统结构和移植内容 129
8.1.1 用户输入系统的结构 129
8.1.2 移植的内容 131
8.2 移植的要点 131
8.2.1 input驱动程序 131
8.2.2 用户空间的处理 134
8.2.3 移植需要注意的情况 139
8.3 模拟器中的实现 141
8.3.1 驱动程序 141
8.3.2 用户空间的配置文件 141
8.4 MSM中的实现 142
8.4.1 触摸屏,轨迹球和按键驱动程序 142
8.4.2 用户空间的配置文件 144
8.5 OMAP中的实现 144
8.5.1 触摸屏和键盘的驱动程序 144
8.5.2 用户空间的配置文件 146
8.6 虚拟按键的实现 146
第9章 传感器系统 148
9.1 传感器系统结构和移植内容 148
9.1.1 传感器系统的结构 148
9.1.2 移植的内容 150
9.2 移植和调试的要点 150
9.2.1 驱动程序 150
9.2.2 硬件抽象层的内容 151
9.2.3 上层的情况和注意事项 153
9.3 模拟器中的实现 157
第10章 音频系统 162
10.1 音频系统结构和移植内容 162
10.1.1 音频系统的结构 162
10.1.2 移植的内容 164
10.2 移植和调试的要点 164
10.2.1 Audio驱动程序 164
10.2.2 硬件抽象层的内容 164
10.2.3 Audio策略管理的内容 168
10.2.4 上层的情况和注意事项 169
10.3 通用的Audio系统实现 170
10.3.1 用桩实现的Audio硬件抽象层 172
10.3.2 提供Dump功能的Audio硬件抽象层 174
10.3.3 通用的Audio硬件抽象层 177
10.4 MSM系统的实现 178
10.4.1 Audio驱动程序 178
10.4.2 Audio硬件抽象层 180
10.5 基于OSS和ALSA的实现方式 183
10.5.1 OSS驱动程序 183
10.5.2 基于OSS的硬件抽象层 184
10.5.3 ALSA驱动程序 185
10.5.4 基于ALSA的硬件抽象层 186
第11章 视频输出系统 190
11.1 视频输出系统结构和移植内容 190
11.1.1 视频输出系统的结构 191
11.1.2 移植的内容 192
11.2 移植和调试的要点 192
11.2.1 驱动程序 192
11.2.2 硬件抽象层的内容 192
11.2.3 上层的情况和注意实现 195
11.3 Overlay硬件抽象层实现的框架 199
11.4 OMAP系统的实现 200
11.4.1 OMAP的视频输出部分的驱动程序 200
11.4.2 OMAP Overlay 硬件抽象层 202