編輯推薦
從Android開源工程到產品的開發寶典
全面介紹Android中與硬體相關的子系統
按照驅動程式和硬體抽象層兩方面把握移植要點
高效粘合Linux系統經驗和移動設備套用場景
以三種硬體平台為參考,參考開發環境宜於獲得
內容簡介
本書是一本全面介紹android系統級開發的作品,全書以移植和調試為重點。android具有一個龐大的軟體系統,任何開發者都難以掌握系統的每一個細節。因此,如何高效地理解和開發系統,就成了android系統級別工程師面對的主要問題。本書作者以實際的開發經驗為基礎,以軟體工程思想為指導,完成了本書。本書介紹了從android開源工程到一個基於實際硬體產品中的主要工作,一方面讓讀者清晰把握各個子系統的架構,另一方面讓讀者把握移植這個開發核心環節的要點。
本書適合linux開發人員、移動設備開發人員、android系統框架層和底層開發人員、有意圖深入學習android的人員、以及從事手機研發的讀者閱讀
作譯者
本書提供作譯者介紹
韓超,中國大陸資深Linux和移動開發工程師,長期從事一線開發工作,兼具開發實踐經驗和完備的教育思維模式。韓超是中國大陸較早開發Android系統開發的人員,曾從事系統框架、晶片移植適配和移動產品等開發領域;也曾經引領各種技術人員進入Android領域,並組織參與技術交流。
目錄
第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.1goldfish核心原始碼 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.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.2staging中的驅動程式 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 androidparanoid網路 68
4.4 goldfish的相關設備驅動 70
4.4.1FrameBuffer的驅動程式 70
4.4.2 鍵盤的驅動程式 70
4.4.3 實時時鐘的驅動程式 71
4.4.4TTY終端的驅動程式 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.1donut及其之前顯示系統的結構 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.3overlay硬體抽象層實現的框架 199
11.4 omap系統的實現 200
11.4.1 omap的視頻輸出部分的驅動程式 200
11.4.2 omap overlay 硬體抽象層 202
第12章 照相機系統 205
12.1 照相機系統結構和移植內容 205
12.1.1 照相機系統的結構 206
12.1.2 移植的內容 207
12.2 移植和調試的要點 207
12.2.1 video for 4linux驅動程式 207
12.2.2 硬體抽象層的內容 210
12.2.3 上層的情況和注意事項 215
12.2.4 照相機系統的數據流情況 219
12.3 camera硬體抽象層樁實現 222
12.4 msm平台的camera實現 226
12.4.1 msm平台的camera驅動程式 226
12.4.2 msm平台的camera硬體抽象層 227
12.5 omap平台的camera實現 228
12.5.1 omap平台的camera驅動程式 228
12.5.2 omap平台的camera硬體抽象層 229
第13章 無線區域網路系統 230
13.1 無線區域網路系統結構和移植內容 230
13.1.1 無線區域網路系統的結構 231
13.1.2 移植的內容 232
13.2 移植和調試的要點 232
13.2.1 協定和驅動程式 232
13.2.2 用戶空間的內容 233
13.2.3 上層的情況和調試方法 233
13.3 omap系統的無線區域網路實現 235
13.3.1 linux核心中的內容 235
13.3.2 用戶空間的實現 236
第14章 藍牙系統 238
14.1 藍牙系統結構和移植內容 238
14.1.1 藍牙系統的結構 239
14.1.2 移植的內容 240
14.2 移植和調試的要點 240
14.2.1 驅動程式 240
14.2.2本地代碼的配置部分 242
14.2.3 上層的情況和調試方法 244
14.3 msm系統的藍牙實現 245
14.3.1 驅動部分 245
14.3.2 用戶空間的部分 247
第15章 定位系統 248
15.1 定位系統的系統結構和移植內容 248
15.1.1 定位系統的系統結構 248
15.1.2 移植的內容 250
15.2 移植和調試的要點 250
15.2.1 驅動程式 250
15.2.2 硬體抽象層 251
15.2.3 上層的情況和調試方法 253
15.3 仿真器的gps硬體適配層實現 256
15.4 msm平台的gps硬體適配層實現 257
第16章 電話系統 260
16.1 電話系統結構和移植內容 260
16.1.1 電話系統的系統結構 260
16.1.2 移植的內容 262
16.2 移植和調試的要點 262
16.2.1 驅動程式 262
16.2.2RIL實現庫的接口 264
16.2.3 數據連線部分 266
16.2.4 調試方法 267
16.3 電話部分的ril參考實現 268
16.3.1 連線埠初始化 268
16.3.2 at命令處理流程 269
16.3.3 event模組 270
16.3.4 modem at命令初始化 272
16.3.5 請求和回響流程的處理 272
16.3.6 特定命令類型的實現 274
第17章 opengl 3d引擎 276
17.1 opengl系統結構和移植內容 276
17.1.1 opengl系統的結構 277
17.1.2 移植的內容 283
17.2 移植和調試的要點 283
17.2.1 opengl移植層的接口 283
17.2.2 上層的情況和opengl的調試 285
17.2 android軟體opengl的實現 288
17.3 不同系統中的實現 290
第18章OpenMax多媒體引擎 292
18.1 openmax系統結構和移植內容 292
18.1.1 openmax系統的結構 293
18.1.2 android openmax實現的內容 297
18.2 openmax的接口與實現 297
18.2.1 openmax il層的接口 297
18.2.2 openmax il實現的內容 302
18.2.3 android中openmax的適配層 302
18.3 omap平台openmax il的硬體實現 304
18.3.1 ti openmax il實現的結構和機制 304
18.3.2 ti openmax il的核心和公共內容 306
18.3.3 一個ti openmax il組件的實現 307
第19章 多媒體系統的外掛程式 310
19.1 android多媒體相關結構與移植內容 310
19.1.1 多媒體處理過程 311
19.1.2 移植的內容 312
19.2opencore引擎的結構和外掛程式 313
19.2.1 opencore的結構 313
19.2.2 opencore的node外掛程式機制 314
19.2.3 openmax部分的結構、實現和外掛程式結構 316
19.2.4 關於媒體輸入輸出類mediaio 322
19.2.5 opencore player的視頻顯示部分外掛程式 325
19.3 stagefright引擎的結構和外掛程式 326
19.3.1 stagefright系統結構 326
19.3.2 stagefright對android中openmax接口的實現 328
19.3.3 mediasource外掛程式機制 328
19.3.4 openmax和videorenderer外掛程式機制 330
19.4 omap平台實現的外掛程式 332
19.4.1 opencore的openmax外掛程式 333
19.4.2 opencore的視頻輸出外掛程式 334
19.4.3 stagefright的openmax和視頻輸出外掛程式 336
第20章 位塊複製系統 339
20.1 位塊複製結構和移植內容 339
20.1.1 位塊複製系統的結構 339
20.1.2 移植內容 340
20.2 移植和調試的要點 340
20.2.1 驅動程式 340
20.2.2 硬體抽象層的內容 341
20.2.3 上層的情況和注意事項 342
20.3 msm平台中的實現 343
第21章 警報器——實時時鐘系統 346
21.1 警報器——實時時鐘結構和移植內容 346
21.1.1 警報器——實時時鐘系統的結構 346
21.1.2 移植內容 347
21.2 移植與調試的要點 348
21.2.1 rtc驅動程式 348
21.2.2 alarm驅動程式 349
21.2.3 上層的情況和注意事項 349
21.3 模擬器環境中的實現 351
21.4 msm平台的實現 351
第22章 光系統 354
22.1 光系統結構和移植內容 354
22.1.1 光系統部分的結構 354
22.1.2 移植內容 355
22.2 移植與調試的要點 356
22.2.1 驅動程式 356
22.2.2 硬體抽象層的內容 356
22.2.3 上層的情況和注意事項 357
22.3 msm中的實現 359
22.3.1 驅動程式 359
22.3.2 硬體抽象層 359
第23章 振動器系統 361
23.1 振動器系統結構和移植內容 361
23.1.1 振動器部分的結構 361
23.1.2 移植內容 362
23.2 移植與調試的要點 363
23.2.1 驅動程式 363
23.2.2 硬體抽象層的內容 363
23.2.3 上層的情況和注意事項 364
23.3 msm中的實現 365
第24章 電池系統 367
24.1 電池系統結構和移植內容 367
24.1.1 電池系統部分的結構 367
24.1.2 移植內容 368
24.2 移植和調試的要點 368
24.2.1 驅動程式 368
24.2.2 上層的情況和注意事項 369
24.3 模擬器中的實現 371