基本信息
作者: 韓超 梁泉 [作譯者介紹]
出版社:電子工業出版社
ISBN:9787121126093
上架時間:2011-2-18
出版日期:2011 年2月
開本:16開
頁碼:372
版次:1-1
編輯推薦
從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.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
第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.2 RIL實現庫的接口 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.2 opencore引擎的結構和外掛程式 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
前言
Android系統是目前最為流行的手機系統之一,本書作者在推出了全面介紹Android系統的《Android系統原理及開發要點詳解》一書,同時出版了繁體版,並將著作權成功輸出到韓國,韓文版將在2011年7月出版。在本書出版之後,筆者切實感到越來越多的開發人員和企業在關注Android系統的各個方面。
Android系統是開源的,它的一個比較大的優勢就是可以移植到各個不同的硬體平台上。“移植”是Android系統的精華所在,也是Android開發中的難點兼重點。
本書《Android系統級深入開發——移植與調試》出版的主要目的是分享開發經驗,幫助眾多開發者快速地掌握Android系統在不同硬體平台移植的方法。幫助工程師以最快的速度、最小的開銷、最輕的工作量,讓Android系統高效地運行在更多的硬體上。
本書特點
本書緊緊抓住了Android系統移植與調試的主題,從開發者的角度出發,其特點主要包括以下幾個方面:
本書使用的代碼以Android的開源工程為主,硬體也是比較常見的設備,保證讀者可以很容易地獲得開發環境。
根據Android系統自身的固有特點,從Linux核心中的驅動和硬體抽象層兩個著手點作為切入點。
按照Linux的開發思路,從驅動程式的角度出發,讓具有Linux開發經驗的工程師,可以更快地熟悉主要用於移動設備開發的Android系統。
從模擬器、高通的MSM平台、德州儀器的OMAP平台這三種硬體平台出發,全面介紹,不以偏概全,既把握共同點,也突出差異。
對於Android中規模和難度各不相同的子系統,抓住它們和硬體相關的共同點,採取同樣的格式和思路進行介紹,體現了“從特殊到一般”的理念。
簡要介紹各個子系統的框架,並列出代碼路徑,對移植部分的主要調用部分加強提示,讓讀者更全面地把握系統。
本書內容
本書分成24章,各章的內容如下所示:
第1章和第2章:概要部分 介紹Android的系統的大結構、移植的主要工作,開發環境的構建方法
第3章:全書的總綱 全面介紹Linux系統的驅動程式,突出介紹Android中硬體抽象層的不同實現方式,展示Android移植的各個方面
續表
第4章至第6章:Linux核心方面 主要介紹用於模擬器的Goldfish、MSM的mahimahip平台和OMAP的Zoom平台的3種Linux核心,介紹了不同體系結構的移植,與硬體無關的Android專用驅動,並簡單介紹了各個硬體設備的驅動程式
第7章和第8章:基本GUI的系統 包括顯示輸出和用戶輸入兩個部分,是每個系統最優先移植的部分
第9章:感測器系統 體現Android系統最經典的移植方式
第10章至第12章:多媒體的輸入輸出環節 是Android移植重點關注的部分
.第13章至第15章:連線系統 介紹連線方面的無線區域網路、藍牙和定位三個子系統,前兩者使用Linux中比較標準的方式,定位主要通過GPS進行介紹
第16章:電話系統 介紹電話系統,這也是用於移動設備的核心部分
第17章:OpenGL 作為顯示加速的OpenGL 3D的移植,體現Android和業界標準規範的接軌
第18章和第19章:多媒體 用於多媒體加速的編解碼單元的移植,第18章介紹編結碼較下層的標準模組OpenMax外掛程式,第19章介紹OpenMax外掛程式在Android系統中的使用
第20章:位塊複製 介紹位塊複製部分,主要用於原始圖像數據處理的加速
第21章至第24章:幾個小系統 介紹與行動電話相關的警報器、光、振動器、電池信息這4個Android中較小系統的移植
本書讀者
本書適合不同類型的讀者群,不同類型的讀者在學習的時候需要使用不同的方法。作者的建議如下:
對於熟悉Linux核心但不熟悉Android的開發者,應該以驅動程式作為切入點,通過硬體抽象層的實現,將Linux的各個驅動程式套用到Android系統中。
對於熟悉Android系統但不熟悉Linux核心的開發者,向下了解Linux核心,這樣既可以更深入地了解Android系統的運作方式,又可以拓展自己的技術領域。
對於經驗較多,希望深入研究Android系統的開發者,應該更關注開發的細節,了解移植中調試的要點。
本書作者
本書的規劃和統籌由中國大陸的韓超完成,韓超常年工作在Linux和Android的開發一線,兼具產品和理論經驗。本書內容來源於工作在不同領域Android和Linux開發者多年的經驗。韓超和梁泉完成了本書內容的主要部分,眾多不同規模的企業開發成果也為本書的編寫提供了重要的素材。參與本書編寫的還有崔海斌、於仕林、張宇、張超、趙家維、黃亮、沈楨、徐威特、楊鈺、馬若劼、曹道剛等。廣大社區開發者也對本書的成稿作出了貢獻。