第1章 Android系統(tǒng)移植開發(fā)概述 1
1.1 Android系統(tǒng)架構(gòu)和生態(tài)系統(tǒng) 1
1.1.1 Android軟件系統(tǒng) 1
1.1.2 Android的生態(tài)系統(tǒng) 3
1.2 Android移植的概念和方法 4
1.3 Android移植的主要工作 5
第2章 Android源代碼和開發(fā)環(huán)境 8
2.1 開發(fā)環(huán)境和工具 8
2.2 Android的代碼庫 9
2.3 Android系統(tǒng)代碼和編譯 9
2.3.1 獲取Android源代碼 9
2.3.2 Android源代碼結(jié)構(gòu) 12
2.3.3 編譯Android系統(tǒng)源代碼 13
2.3.4 編譯Android結(jié)果 13
2.4 Android Kernel代碼和編譯 14
2.4.1 Goldfish內(nèi)核源代碼 15
2.4.2 MSM內(nèi)核源代碼 15
2.4.3 Omap內(nèi)核源代碼 16
2.5 仿真器的運行環(huán)境 16
2.5.1 仿真器的運行 16
2.5.2 使用附加工具 18
第3章 Android系統(tǒng)移植的結(jié)構(gòu)和方法 20
3.1 Android的Linux操作系統(tǒng) 20
3.1.1 標準的Linux操作系統(tǒng) 20
3.1.2 Android對Linux 內(nèi)核的使用 22
3.1.3 Linux內(nèi)核空間到用戶空間的接口 24
3.1.4 平臺數(shù)據(jù)和平臺驅(qū)動 34
3.2 Android的硬件抽象層 35
3.2.1 硬件抽象層的地位和功能 35
3.2.2 硬件抽象層接口方式 36
3.3 Android中各個部件的移植方式 41
3.4 輔助性工作和基本調(diào)試方法 41
3.4.1 移植的輔助性工作 42
3.4.2 調(diào)試的方法 46
第4章 Android的GoldFish內(nèi)核和驅(qū)動 56
4.1 GoldFish內(nèi)核概述 56
4.2 GoldFish體系結(jié)構(gòu)移植 58
4.3 GoldFish的Android專用驅(qū)動和組件 59
4.3.1 wakelock和earlysuspend 59
4.3.2 staging中的驅(qū)動程序 61
4.3.3 Ashmem驅(qū)動程序 66
4.3.4 Alarm驅(qū)動程序 67
4.3.5 pmem驅(qū)動程序 67
4.3.6 ADB Garget驅(qū)動程序 68
4.3.7 Android Paranoid網(wǎng)絡(luò) 68
4.4 GoldFish的相關(guān)設(shè)備驅(qū)動 70
4.4.1 Framebuffer的驅(qū)動程序 70
4.4.2 鍵盤的驅(qū)動程序 70
4.4.3 實時時鐘的驅(qū)動程序 71
4.4.4 TTY終端的驅(qū)動程序 71
4.4.5 NandFlash的驅(qū)動程序 72
4.4.6 MMC的驅(qū)動程序 72
4.4.7 電池的驅(qū)動程序 73
4.4.8 EAC音頻的驅(qū)動程序 73
第5章 Android的MSM內(nèi)核和驅(qū)動 74
5.1 MSM處理器概述 74
5.1.1 MSM概述 74
5.1.2 MSM適用于Android的Linux內(nèi)核的結(jié)構(gòu) 77
5.2 MSM體系結(jié)構(gòu)的移植 79
5.3 MSM的Android專用驅(qū)動和組件 80
5.4 MSM的mahimahip平臺的主要設(shè)備驅(qū)動 81
5.4.1 顯示的驅(qū)動程序 81
5.4.2 觸摸屏的驅(qū)動程序 82
5.4.3 按鍵和軌跡球的驅(qū)動程序 82
5.4.4 實時時鐘的驅(qū)動程序 83
5.4.5 攝像頭的驅(qū)動程序 83
5.4.6 無線局域網(wǎng)的驅(qū)動程序 83
5.4.7 藍牙的驅(qū)動程序 84
5.4.8 DSP相關(guān)的驅(qū)動程序 84
5.4.9 高通特有的組件相關(guān)內(nèi)容 85
第6章 Android的OMAP內(nèi)核和驅(qū)動 87
6.1 OMAP內(nèi)核概述 87
6.1.1 OMAP概述 87
6.1.2 OMAP適用于Android的Linux內(nèi)核的結(jié)構(gòu) 91
6.2 OMAP體系結(jié)構(gòu)的移植 92
6.2.1 OMAP平臺部分的移植 92
6.2.2 OMAP處理器部分的移植 94
6.3 OMAP的Android專用驅(qū)動和組件 96
6.4 OMAP的主要設(shè)備驅(qū)動 97
6.4.1 顯示的驅(qū)動程序 97
6.4.2 攝像頭和視頻輸出的驅(qū)動程序 98
6.4.3 i2c總線驅(qū)動程序 98
6.4.4 鍵盤的驅(qū)動程序 99
6.4.5 觸摸屏的驅(qū)動程序 99
6.4.6 實時時鐘的驅(qū)動程序 99
6.4.7 音頻的驅(qū)動程序 99
6.4.8 藍牙的驅(qū)動程序 100
6.4.9 以太網(wǎng)的驅(qū)動程序 100
6.4.10 DSP的驅(qū)動程序 100
第7章 顯示系統(tǒng) 101
7.1 顯示系統(tǒng)結(jié)構(gòu)和移植內(nèi)容 101
7.1.1 Donut及其之前顯示系統(tǒng)的結(jié)構(gòu) 102
7.1.2 Eclair及其之后顯示系統(tǒng)的結(jié)構(gòu) 102
7.1.3 移植的內(nèi)容 103
7.2 移植和調(diào)試的要點 104
7.2.1 Framebuffer驅(qū)動程序 104
7.2.2 Donut及其之前的硬件抽象層 106
7.2.3 Eclair及其之后的硬件抽象層 107
7.3 顯示部分模擬器的實現(xiàn)方式 112
7.3.1 Goldfish的framebuffer驅(qū)動程序 112
7.3.2 默認的Gralloc模塊的實現(xiàn) 113
7.4 MSM中的實現(xiàn) 119
7.4.1 MSM的framebuffer驅(qū)動程序 119
7.4.2 MSM的Gralloc模塊的實現(xiàn) 120
7.5 OMAP中的實現(xiàn) 126
7.5.1 OMAP的framebuffer驅(qū)動程序 126
7.5.2 OMAP的用戶空間的實現(xiàn) 128
第8章 用戶輸入系統(tǒng) 129
8.1 用戶輸入系統(tǒng)結(jié)構(gòu)和移植內(nèi)容 129
8.1.1 用戶輸入系統(tǒng)的結(jié)構(gòu) 129
8.1.2 移植的內(nèi)容 131
8.2 移植的要點 131
8.2.1 input驅(qū)動程序 131
8.2.2 用戶空間的處理 134
8.2.3 移植需要注意的情況 139
8.3 模擬器中的實現(xiàn) 141
8.3.1 驅(qū)動程序 141
8.3.2 用戶空間的配置文件 141
8.4 MSM中的實現(xiàn) 142
8.4.1 觸摸屏,軌跡球和按鍵驅(qū)動程序 142
8.4.2 用戶空間的配置文件 144
8.5 OMAP中的實現(xiàn) 144
8.5.1 觸摸屏和鍵盤的驅(qū)動程序 144
8.5.2 用戶空間的配置文件 146
8.6 虛擬按鍵的實現(xiàn) 146
第9章 傳感器系統(tǒng) 148
9.1 傳感器系統(tǒng)結(jié)構(gòu)和移植內(nèi)容 148
9.1.1 傳感器系統(tǒng)的結(jié)構(gòu) 148
9.1.2 移植的內(nèi)容 150
9.2 移植和調(diào)試的要點 150
9.2.1 驅(qū)動程序 150
9.2.2 硬件抽象層的內(nèi)容 151
9.2.3 上層的情況和注意事項 153
9.3 模擬器中的實現(xiàn) 157
第10章 音頻系統(tǒng) 162
10.1 音頻系統(tǒng)結(jié)構(gòu)和移植內(nèi)容 162
10.1.1 音頻系統(tǒng)的結(jié)構(gòu) 162
10.1.2 移植的內(nèi)容 164
10.2 移植和調(diào)試的要點 164
10.2.1 Audio驅(qū)動程序 164
10.2.2 硬件抽象層的內(nèi)容 164
10.2.3 Audio策略管理的內(nèi)容 168
10.2.4 上層的情況和注意事項 169
10.3 通用的Audio系統(tǒng)實現(xiàn) 170
10.3.1 用樁實現(xiàn)的Audio硬件抽象層 172
10.3.2 提供Dump功能的Audio硬件抽象層 174
10.3.3 通用的Audio硬件抽象層 177
10.4 MSM系統(tǒng)的實現(xiàn) 178
10.4.1 Audio驅(qū)動程序 178
10.4.2 Audio硬件抽象層 180
10.5 基于OSS和ALSA的實現(xiàn)方式 183
10.5.1 OSS驅(qū)動程序 183
10.5.2 基于OSS的硬件抽象層 184
10.5.3 ALSA驅(qū)動程序 185
10.5.4 基于ALSA的硬件抽象層 186
第11章 視頻輸出系統(tǒng) 190
11.1 視頻輸出系統(tǒng)結(jié)構(gòu)和移植內(nèi)容 190
11.1.1 視頻輸出系統(tǒng)的結(jié)構(gòu) 191
11.1.2 移植的內(nèi)容 192
11.2 移植和調(diào)試的要點 192
11.2.1 驅(qū)動程序 192
11.2.2 硬件抽象層的內(nèi)容 192
11.2.3 上層的情況和注意實現(xiàn) 195
11.3 Overlay硬件抽象層實現(xiàn)的框架 199
11.4 OMAP系統(tǒng)的實現(xiàn) 200
11.4.1 OMAP的視頻輸出部分的驅(qū)動程序 200
11.4.2 OMAP Overlay 硬件抽象層 202