第1章 Android系統(tǒng)移植開(kāi)發(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源代碼和開(kāi)發(fā)環(huán)境 8
2.1 開(kāi)發(fā)環(huán)境和工具 8
2.2 Android的代碼庫(kù) 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 仿真器的運(yùn)行環(huán)境 16
2.5.1 仿真器的運(yùn)行 16
2.5.2 使用附加工具 18
第3章 Android系統(tǒng)移植的結(jié)構(gòu)和方法 20
3.1 Android的Linux操作系統(tǒng) 20
3.1.1 標(biāo)準(zhǔn)的Linux操作系統(tǒng) 20
3.1.2 Android對(duì)Linux 內(nèi)核的使用 22
3.1.3 Linux內(nèi)核空間到用戶空間的接口 24
3.1.4 平臺(tái)數(shù)據(jù)和平臺(tái)驅(qū)動(dòng) 34
3.2 Android的硬件抽象層 35
3.2.1 硬件抽象層的地位和功能 35
3.2.2 硬件抽象層接口方式 36
3.3 Android中各個(gè)部件的移植方式 41
3.4 輔助性工作和基本調(diào)試方法 41
3.4.1 移植的輔助性工作 42
3.4.2 調(diào)試的方法 46
第4章 Android的GoldFish內(nèi)核和驅(qū)動(dòng) 56
4.1 GoldFish內(nèi)核概述 56
4.2 GoldFish體系結(jié)構(gòu)移植 58
4.3 GoldFish的Android專用驅(qū)動(dòng)和組件 59
4.3.1 wakelock和earlysuspend 59
4.3.2 staging中的驅(qū)動(dòng)程序 61
4.3.3 Ashmem驅(qū)動(dòng)程序 66
4.3.4 Alarm驅(qū)動(dòng)程序 67
4.3.5 pmem驅(qū)動(dòng)程序 67
4.3.6 ADB Garget驅(qū)動(dòng)程序 68
4.3.7 Android Paranoid網(wǎng)絡(luò) 68
4.4 GoldFish的相關(guān)設(shè)備驅(qū)動(dòng) 70
4.4.1 Framebuffer的驅(qū)動(dòng)程序 70
4.4.2 鍵盤(pán)的驅(qū)動(dòng)程序 70
4.4.3 實(shí)時(shí)時(shí)鐘的驅(qū)動(dòng)程序 71
4.4.4 TTY終端的驅(qū)動(dòng)程序 71
4.4.5 NandFlash的驅(qū)動(dòng)程序 72
4.4.6 MMC的驅(qū)動(dòng)程序 72
4.4.7 電池的驅(qū)動(dòng)程序 73
4.4.8 EAC音頻的驅(qū)動(dòng)程序 73
第5章 Android的MSM內(nèi)核和驅(qū)動(dòng) 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ū)動(dòng)和組件 80
5.4 MSM的mahimahip平臺(tái)的主要設(shè)備驅(qū)動(dòng) 81
5.4.1 顯示的驅(qū)動(dòng)程序 81
5.4.2 觸摸屏的驅(qū)動(dòng)程序 82
5.4.3 按鍵和軌跡球的驅(qū)動(dòng)程序 82
5.4.4 實(shí)時(shí)時(shí)鐘的驅(qū)動(dòng)程序 83
5.4.5 攝像頭的驅(qū)動(dòng)程序 83
5.4.6 無(wú)線局域網(wǎng)的驅(qū)動(dòng)程序 83
5.4.7 藍(lán)牙的驅(qū)動(dòng)程序 84
5.4.8 DSP相關(guān)的驅(qū)動(dòng)程序 84
5.4.9 高通特有的組件相關(guān)內(nèi)容 85
第6章 Android的OMAP內(nèi)核和驅(qū)動(dòng) 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平臺(tái)部分的移植 92
6.2.2 OMAP處理器部分的移植 94
6.3 OMAP的Android專用驅(qū)動(dòng)和組件 96
6.4 OMAP的主要設(shè)備驅(qū)動(dòng) 97
6.4.1 顯示的驅(qū)動(dòng)程序 97
6.4.2 攝像頭和視頻輸出的驅(qū)動(dòng)程序 98
6.4.3 i2c總線驅(qū)動(dòng)程序 98
6.4.4 鍵盤(pán)的驅(qū)動(dòng)程序 99
6.4.5 觸摸屏的驅(qū)動(dòng)程序 99
6.4.6 實(shí)時(shí)時(shí)鐘的驅(qū)動(dòng)程序 99
6.4.7 音頻的驅(qū)動(dòng)程序 99
6.4.8 藍(lán)牙的驅(qū)動(dòng)程序 100
6.4.9 以太網(wǎng)的驅(qū)動(dòng)程序 100
6.4.10 DSP的驅(qū)動(dòng)程序 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)試的要點(diǎn) 104
7.2.1 Framebuffer驅(qū)動(dòng)程序 104
7.2.2 Donut及其之前的硬件抽象層 106
7.2.3 Eclair及其之后的硬件抽象層 107
7.3 顯示部分模擬器的實(shí)現(xiàn)方式 112
7.3.1 Goldfish的framebuffer驅(qū)動(dòng)程序 112
7.3.2 默認(rèn)的Gralloc模塊的實(shí)現(xiàn) 113
7.4 MSM中的實(shí)現(xiàn) 119
7.4.1 MSM的framebuffer驅(qū)動(dòng)程序 119
7.4.2 MSM的Gralloc模塊的實(shí)現(xiàn) 120
7.5 OMAP中的實(shí)現(xiàn) 126
7.5.1 OMAP的framebuffer驅(qū)動(dòng)程序 126
7.5.2 OMAP的用戶空間的實(shí)現(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 移植的要點(diǎn) 131
8.2.1 input驅(qū)動(dòng)程序 131
8.2.2 用戶空間的處理 134
8.2.3 移植需要注意的情況 139
8.3 模擬器中的實(shí)現(xiàn) 141
8.3.1 驅(qū)動(dòng)程序 141
8.3.2 用戶空間的配置文件 141
8.4 MSM中的實(shí)現(xiàn) 142
8.4.1 觸摸屏,軌跡球和按鍵驅(qū)動(dòng)程序 142
8.4.2 用戶空間的配置文件 144
8.5 OMAP中的實(shí)現(xiàn) 144
8.5.1 觸摸屏和鍵盤(pán)的驅(qū)動(dòng)程序 144
8.5.2 用戶空間的配置文件 146
8.6 虛擬按鍵的實(shí)現(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)試的要點(diǎn) 150
9.2.1 驅(qū)動(dòng)程序 150
9.2.2 硬件抽象層的內(nèi)容 151
9.2.3 上層的情況和注意事項(xiàng) 153
9.3 模擬器中的實(shí)現(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)試的要點(diǎn) 164
10.2.1 Audio驅(qū)動(dòng)程序 164
10.2.2 硬件抽象層的內(nèi)容 164
10.2.3 Audio策略管理的內(nèi)容 168
10.2.4 上層的情況和注意事項(xiàng) 169
10.3 通用的Audio系統(tǒng)實(shí)現(xiàn) 170
10.3.1 用樁實(shí)現(xiàn)的Audio硬件抽象層 172
10.3.2 提供Dump功能的Audio硬件抽象層 174
10.3.3 通用的Audio硬件抽象層 177
10.4 MSM系統(tǒng)的實(shí)現(xiàn) 178
10.4.1 Audio驅(qū)動(dòng)程序 178
10.4.2 Audio硬件抽象層 180
10.5 基于OSS和ALSA的實(shí)現(xiàn)方式 183
10.5.1 OSS驅(qū)動(dòng)程序 183
10.5.2 基于OSS的硬件抽象層 184
10.5.3 ALSA驅(qū)動(dòng)程序 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)試的要點(diǎn) 192
11.2.1 驅(qū)動(dòng)程序 192
11.2.2 硬件抽象層的內(nèi)容 192
11.2.3 上層的情況和注意實(shí)現(xiàn) 195
11.3 Overlay硬件抽象層實(shí)現(xiàn)的框架 199
11.4 OMAP系統(tǒng)的實(shí)現(xiàn) 200
11.4.1 OMAP的視頻輸出部分的驅(qū)動(dòng)程序 200
11.4.2 OMAP Overlay 硬件抽象層 202