-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Android板級支持與硬件相關子系統

( 簡體 字)
作者:韓超 等類別:1. -> 程式設計 -> 手機程式 -> Android
譯者:
出版社:電子工業出版社Android板級支持與硬件相關子系統 3dWoo書號: 36625
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:10/1/2013
頁數:420
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787121213489
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

開發者的需要
Android系統已經推出了將近5個年頭了,從1.0版本一直到本書寫作時的4.2版本。作為其載體的硬件也經過了多次升級。到今天,Android設備已經成為硬件的集大成者。硬件方面的開發一直是開發的難點,凡是一個完整Android設備的開發者,無論處于產業鏈的哪一個階段,都不可避免地要處理與硬件相關的問題。
Android的開發者通常面對幾個方面的難點:
Android系統的代碼龐大,難以把握硬件相關的調試思路。
不清楚軟件和硬件之間的直接關系。
對某個硬件平臺的知識和經驗不適用于其他硬件平臺。
Android系統的版本升級過程中,硬件相關的部分常常發生重大變動。
另外一個客觀的情況是,目前一般處理器或者基本硬件平臺的BSP(Board Support Package,板級支持包)部分都是由芯片的廠商統一完成的,并且已經趨近于成熟。因此,開發者的主要工作不再是構建完整的BSP,而是調試和修改現有的BSP。
本書特色
本書的目的是要為開發者提供切實有效的幫助。針對開發者的現實情況,本書主要具有以下幾個特點:
用框圖描述每一個硬件相關子系統的結構,并區分BSP部分和公用部分。
選用多個流行的硬件平臺,對比其中不同的實現和相同的理念。
對比Android 2.3和Android 4.x的實現,展示硬件相關部分的升級。
對龐大的系統去耦合,展示Android一些原始的核心設計思路。
列出每一個部分相關的代碼路徑。
簡要列出代碼的關鍵部分。
根據實際經驗編寫,工程性強。
通過對每一個子系統的學習,讀者可以了解現有Android系統的結構,經過深入理解后,可以明白Android系統的設計思路。學習后,如果要在系統中增加一個新的非標準硬件,讀者也能比較容易地完成。
本書特別選定了Nexus One、Nexus S、Galaxy Nexus等幾款手機作為參考平臺。其中一個很大的優點就是以上幾個平臺都是Google認定的,具有典型性,并且它們從內核到Android系統的代碼都是開源的,讀者可以很容易獲得。雖然以上幾個硬件平臺不是最新的,但是根據嵌入式SOC的特點,高通的處理器都與Nexus One的QSD 8x處理器類似,三星的處理器都與Nexus S的Exynos處理器類似,德州儀器的處理器都與Galaxy Nexus 的OMAP處理器類似。因此,這樣的選擇既方便又具有廣泛的適應性,當讀者熟悉了這幾個硬件平臺后,置于Marvel、Freescale和NVidia等公司的平臺可以實現融會貫通。
Android系統可以被視為一個功能完備的機器人。其中與硬件相關的BSP部分,則是這個機器人的根基和經脈,雖然占的比重不大,卻是系統的關鍵所在。
本書的理念可以用下面的圖來表示。

本書內容
本書提供了系統化的Android系統的開發知識,以硬件相關的子系統為核心,主要包括以下幾個方面的內容:
硬件相關的子系統的特點。
幾個不同的硬件平臺的Linux內核結構。
每個子系統的總體結構和BSP結構。
每個子系統的BSP的實現要點。
具體硬件在Linux內核與Android硬件抽象層相關的實現。
人的知識和經驗本身是網狀結構,各部分相互關聯,錯綜復雜。但是作為出版的書籍,則必須將其串行成章節的形式,本書總體上是以橫向結構來進行組織的,大部分章節是針對每一個硬件相關子系統的描述,每一章的組織結構也比較類似。
本書讀者
本書適用于各類Android技術群體,也適用于嵌入式Linux的技術人員了解實際系統。作者對讀者有以下幾個方面的建議:
根據書中提供的知識和經驗,對照Android的源代碼,有相應的Android設備,這三者的結合是最理想的學習環境。
要首先理解宏觀結構,再研究細枝末節,硬件相關子系統的很多代碼并非在任何情況下都會適用,讀者需要了解其適用的場景。
BSP部分的開發偏重下層,讀者不要過于依賴界面,而要習慣查看系統日志,從Linux系統標準的設備和特殊文件系統中獲取信息,并使用各種命令行工具調試。
硬件抽象層的目的是為了適配各種硬件,很多程序的結構看似冗余,卻正是BSP設計的精華所在,這也是讀者需要關注的內容。
夯實Linux的基礎對Android開發也非常重要,對Android的BSP開發尤為重要。
在開發的過程中,可能用到很多不同的硬件平臺,要根據本書的思路掌握查看硬件信息和硬件相關代碼的方法。
本書作者
本書的規劃和統籌由中國大陸的韓超完成,韓超在Linux和Android領域具有豐富的一線開發經驗。本書內容來源于工作在不同領域的開發者多年的經驗。韓超完成了本書內容的主要部分,眾多不同規模的企業開發成果也為本書的編寫提供了重要的素材。參與本書編寫的還有崔海斌、于仕林、張宇、張超、趙家維、黃亮、沈楨、徐威特、楊鈺、馬若劼、曹道剛、梁泉等。
內容簡介:

本書以硬件相關的子系統為核心,提供具有完整知識體系Android系統級的開發知識。本書選定了幾個流行的硬件作為參考平臺,讀者可以很容易地得到硬件和開源代碼。本書突出了硬件相關的子系統的特點,展示了幾個不同的硬件平臺的內核結構,介紹了每個子系統的總體結構和BSP結構、每個子系統的BSP的實現要點,以及具體硬件在Linux內核與Android硬件抽象層相關的實現。

目錄:

第1章 Android的BSP和子系統開發 1
1.1 Android板級支持工作概述 1
1.1.1 Android的開放源
代碼工程和BSP 1
1.1.2 Android的系統結構 1
1.2 Android的開發環境和源代碼 2
1.2.1 Android的開發環境 2
1.2.2 源代碼倉庫 3
1.3 BSP模塊和相關子系統 5
1.3.1 Android的BSP 5
1.3.2 BSP和硬件相關子系統 6
1.3.3 不同類型的Android設備 7
第2章 Android系統BSP部分工作 8
2.1 Android的BSP部分
工作概述 8
2.2 BSP的全局部分 8
2.2.1 源代碼工程板級別
支持部分 9
2.2.2 硬件相關的代碼改動 11
2.3 Android的Linux操作系統 14
2.3.1 Android中的Linux操作
系統的特定內容 14
2.3.2 Android的Linux的
基本支持 15
2.3.3 Android各個硬件設備的
驅動程序 16
2.4 Android的硬件抽象層 17
2.4.1 硬件抽象層的地位和功能 17
2.4.2 硬件抽象層接口方式 18
2.5 各個子系統的移植方式 22
2.5.1 Android 2.3中的實現方式 22
2.5.2 Android 2.2及之前的
實現方式 23
2.5.3 Android 4.x中的實現方式 24
2.6 與硬件抽象層相關的
框架層目錄 24
2.6.1 一直保持不變的代碼 24
2.6.2 框架層的本地代碼 24
2.6.3 音頻視頻相關的代碼 25
第3章 Android的Linux內核和驅動 26
3.1 Android的Linux內核概述 26
3.1.1 幾個內核工程 26
3.1.2 內核工程的編譯工具鏈 26
3.1.3 用戶空間關注的內容 27
3.2 Android專用驅動和組件 27
3.2.1 電源管理部分 27
3.2.2 staging中的組件和
驅動程序 28
3.2.3 幾個主要核心模塊 32
3.2.4 輔助的模塊和改動 35
3.3 goldfish平臺的內核和驅動 37
3.3.1 goldfish平臺和內核概述 37
3.3.2 goldfish體系結構移植 38
3.3.3 goldfish的相關設備驅動 40
3.4 高通MSM平臺的
內核和驅動 42
3.4.1 平臺概述 42
3.4.2 體系結構移植 43
3.4.3 設備驅動程序 43
3.5 三星平臺的內核和驅動 44
3.5.1 平臺概述 44
3.5.2 體系結構移植 45
3.5.3 驅動程序部分 45
3.6 德州儀器OMAP平臺的
內核和驅動 46
3.6.1 平臺概述 46
3.6.2 體系結構移植 47
3.6.3 驅動程序部分 47
第4章 顯示系統 49
4.1 顯示系統概述 49
4.2 顯示子系統結構 50
4.2.1 總體結構 50
4.2.2 核心結構和UI庫 51
4.2.3 Surface本地部分 54
4.2.4 Java層的Surface的處理 56
4.3 顯示BSP的結構 57
4.3.1 Framebuffer驅動程序 57
4.3.2 gralloc硬件抽象層 59
4.4 顯示BSP的實現 61
4.4.1 模擬器顯示系統的實現 61
4.4.2 Nexus One系統的實現 68
4.4.3 Nexus S系統的實現 72
4.4.4 Galaxy Nexus系統的實現 73
第5章 用戶輸入系統 75
5.1 用戶輸入系統概述 75
5.2 Android 2.3用戶輸入子系統 76
5.2.1 總體結構 76
5.2.2 本地框架的幾個部分 77
5.2.3 JNI 80
5.2.4 Java層的部分 81
5.3 Android 4.2的用戶輸入
子系統結構 81
5.3.1 總體結構 81
5.3.2 InputManagerService的
實現 82
5.4 用戶輸入BSP的結構 84
5.4.1 Input驅動程序 84
5.4.2 輸入配置文件 87
5.5 用戶輸入BSP的實現 89
5.5.1 模擬器中的實現 89
5.5.2 Nexus One系統中的實現 90
5.5.3 Nexus S系統中的實現 93
5.5.4 Galaxy Nexus系統中的
實現 94
第6章 傳感器系統 96
6.1 傳感器系統概述 96
6.2 傳感器子系統的結構 97
6.2.1 總體結構 97
6.2.2 本地框架層 98
6.2.3 傳感器系統的JNI 99
6.2.4 傳感器系統的Java層 100
6.3 傳感器BSP的結構 101
6.3.1 驅動程序 101
6.3.2 硬件抽象層的內容 102
6.4 傳感器BSP的實現 104
6.4.1 仿真器的實現 104
6.4.2 Nexus One系統實現 106
6.4.3 Nexus S系統實現 107
6.4.4 Galaxy Nexus系統實現 109
第7章 音頻系統 111
7.1 音頻系統概述 111
7.2 音頻子系統結構 112
7.2.1 總體結構 112
7.2.2 Audio的本地框架層 113
7.2.3 Audio系統的JNI和
Java層 114
7.3 音頻BSP的結構 116
7.3.1 Audio驅動程序 116
7.3.2 硬件抽象層的內容 120
7.4 音頻BSP的實現 124
7.4.1 通用的Audio系統實現 124
7.4.2 基于OSS的實現方式 129
7.4.3 基于ALSA的實現方式 130
7.4.4 MSM平臺和Nexus One
系統的實現 132
7.4.5 Nexus S系統的實現 137
第8章 視頻疊加輸出系統 140
8.1 視頻疊加輸出系統概述 140
8.2 視頻輸出子系統的結構 141
8.2.1 Overlay系統的結構 141
8.2.2 本地框架層 142
8.3 視頻疊加輸出BSP結構 144
8.3.1 移植的內容 144
8.3.2 驅動程序 144
8.3.3 硬件抽象層的內容 144
8.3.4 視頻輸出的調用者 146
8.3.5 使用Overlay的
數據流情況 148
8.4 視頻輸出BSP的實現 149
8.4.1 骨架實現 149
8.4.2 OMAP系統的實現 151
8.4.3 Nexus S系統的實現 156
第9章 照相機系統 159
9.1 照相機系統概述 159
9.2 照相機子系統的結構 160
9.2.1 照相機系統的結構 160
9.2.2 Camera的本地層 161
9.2.3 Camera的JNI和Java層 165
9.3 照相機BSP的結構 166
9.3.1 移植的內容 166
9.3.2 Video for 4 Linux
驅動程序 166
9.3.3 硬件抽象層的內容 168
9.3.4 照相機系統上下層的
關系 173
9.4 照相機BSP的實現 175
9.4.1 樁實現 175
9.4.2 Nexus One系統的Camera
實現 178
9.4.3 Nexus S系統的Camera
實現 180
第10章 OpenGL 3D引擎 184
10.1 OpenGL系統概述 184
10.2 OpenGL系統的結構 184
10.2.1 OpenGL和OpenGL ES的
標準結構 184
10.2.2 總體結構 186
10.2.3 OpenGL庫的調用者 188
10.3 OpenGL BSP的結構 190
10.3.1 移植的內容 190
10.3.2 OpenGL移植層的接口 190
10.3.3 OpenGL的調用和測試 192
10.4 OpenGL BSP的實現 193
10.4.1 Android軟件OpenGL的
實現 193
10.4.2 Nexus One系統的實現 195
10.4.3 Nexus S系統的實現 195
10.4.4 Galaxy Nexus系統的
實現 196
第11章 OpenMax引擎 197
11.1 OpenMax系統概述 197
11.2 OpenMax子系統結構 197
11.2.1 OpenMax系統的結構 197
11.2.2 Android中OpenMax的
適配層 201
11.3 OpenMax BSP的結構 203
11.3.1 OpenMax IL層的接口 203
11.3.2 Android的OpenMax 207
11.4 OpenMax BSP的實現 207
11.4.1 OpenMax IL實現的內容 207
11.4.2 OMAP3的OpenMax IL
實現的結構和機制 208
11.4.3 OMAP4的OpenMax IL
實現 213
第12章 位塊復制 216
12.1 位塊復制概述 216
12.2 位塊復制子系統結構 216
12.2.1 總體結構 216
12.2.2 copybit的調用者 217
12.3 位塊復制BSP的結構 218
12.3.1 驅動程序 218
12.3.2 硬件抽象層的接口 218
12.3.3 實現硬件抽象層 220
12.4 位塊復制的實現 220
第13章 無線局域網系統 223
13.1 無線局域網系統概述 223
13.2 無線局域網子系統的結構 223
13.2.1 總體的結構 223
13.2.2 wpa_supplicant工程 225
13.2.3 WiFi本地適配庫 227
13.2.4 WiFi的JNI部分 228
13.2.5 WiFi的Java層 228
13.3 無線局域網BSP的結構 229
13.3.1 協議和驅動程序 229
13.3.2 用戶空間的內容 230
13.4 無線局域網BSP的實現 231
13.4.1 基于BCM4329的方案
(Nexus One和Nexus S) 231
13.4.2 OMAP平臺的一個
典型實現 232
13.4.3 Galaxy Nexus的實現 234
第14章 藍牙系統 237
14.1 藍牙系統概述 237
14.2 藍牙子系統的結構 237
14.2.1 藍牙系統的結構 237
14.2.2 BlueZ 239
14.2.3 bluedroid庫 241
14.2.4 藍牙的JNI部分 241
14.2.5 藍牙的Java部分 242
14.3 BSP的結構 243
14.3.1 協議和驅動程序 244
14.3.2 本地代碼的配置部分 245
14.4 Android 4.2的藍牙系統 246
14.4.1 系統結構 246
14.4.2 藍牙硬件模塊 246
14.4.3 藍牙系統的本地層部分 252
14.4.4 BlueTooth包 252
14.5 BSP的實現 253
14.5.1 Nexus One系統的
藍牙實現 253
14.5.2 Nexus S系統的
藍牙實現 254
14.5.3 Galaxy Nexus系統的
藍牙實現 255
第15章 定位系統 257
15.1 定位系統的概述 257
15.2 定位子系統的結構 257
15.2.1 總體結構 257
15.2.2 JNI部分 259
15.2.3 Java部分 260
15.3 定位BSP的結構 263
15.3.1 驅動程序 263
15.3.2 硬件抽象層的接口 264
15.3.3 實現硬件抽象層 266
15.4 定位BSP的實現 266
15.4.1 仿真器的GPS實現 266
15.4.2 Nexus One系統的實現 268
15.4.3 Nexus S系統的實現 269
15.4.4 Galaxy Nexus系統的
實現 270
第16章 電話系統 271
16.1 電話系統概述 271
16.2 電話子系統的結構 271
16.2.1 總體結構 271
16.2.2 rild層 273
16.2.3 Java層中的電話部分 275
16.3 電話BSP的結構 278
16.3.1 驅動程序 278
16.3.2 RIL實現庫接口
(作為硬件抽象層) 280
16.4 電話BSP部分的實現 281
16.4.1 RIL的參考實現 281
16.4.2 數據連接部分 287
16.4.3 Mock RIL 288
第17章 警報器—實時時鐘系統 290
17.1 警報器—實時時鐘系統 290
17.2 警報器—實時時鐘子
系統的結構 290
17.2.1 總體結構 290
17.2.2 JNI部分 291
17.2.3 Java部分 292
17.2.4 Android系統時間
方面的調用 292
17.3 警報器—實時時鐘
BSP部分的結構 293
17.3.1 RTC驅動程序 293
17.3.2 Alarm驅動程序 294
17.4 警報器—實時時鐘
BSP部分的實現 295
17.4.1 模擬器環境中的實現 295
17.4.2 MSM平臺和Nexus One
系統的實現 295
17.4.3 Nexus S系統的實現 297
17.4.4 Galaxy Nexus系統的
實現 298
第18章 光系統 300
18.1 光系統概述 300
18.2 背光和指示燈子系統的
結構 300
18.2.1 總體結構 300
18.2.2 JNI部分 301
18.2.3 Java服務部分和
調用部分 302
18.3 背光和指示燈
BSP部分的結構 303
18.3.1 驅動程序 303
18.3.2 硬件抽象層的內容 304
18.4 背光和指示燈
BSP部分的實現 305
18.4.1 Nexus One系統的實現 305
18.4.2 Nexus S系統的實現 307
18.4.3 Galaxy Nexus 系統的
實現 308
第19章 振動器系統 311
19.1 振動器系統概述 311
19.2 振動器子系統的結構 311
19.2.1 振動器部分的結構 311
19.2.2 JNI部分 312
19.2.3 Java框架部分 313
19.3 振動器BSP部分的結構 313
19.3.1 驅動程序 313
19.3.2 硬件抽象層的內容 314
19.4 振動器BSP部分的實現 314
19.4.1 Nexus One系統的實現 315
19.4.2 Nexus S系統的實現 316
19.4.3 Galaxy Nexus 316
第20章 電池信息部分 318
20.1 電池信息部分 318
20.2 電池信息子系統的結構 318
20.2.1 電池系統部分的結構 318
20.2.2 JNI部分 319
20.2.3 Java部分 321
20.3 電池信息BSP部分的結構 321
20.4 電池信息BSP部分的實現 322
20.4.1 模擬器中的實現 322
20.4.2 Nexus One 323
20.4.3 Nexus S 324
20.4.4 Galaxy Nexus 325
第21章 Android 4.x的音頻、
視頻系統 326
21.1 Android 4.x的音頻系統 326
21.1.1 音頻系統的結構 326
21.1.2 音頻框架層 327
21.1.3 音頻BSP部分結構 327
21.2 Android 4.x音頻的
BSP實現 330
21.2.1 主實現和策略實現 330
21.2.2 仿真器實現 330
21.2.3 A2DP實現 331
21.2.4 Galaxy Nexus的實現 332
21.3 Android 4.x照相機系統 336
21.3.1 照相機系統的結構 336
21.3.2 Camera的框架層 336
21.3.3 照相機BSP部分結構 339
21.4 Android 4.x照相機的
BSP實現 342
21.4.1 仿真器實現 342
21.4.2 Galaxy Nexus的實現 346
21.5 Android 4.x視頻組合系統 349
21.5.1 視頻組合系統結構 349
21.5.2 SurfaceFlinger對
視頻組合的使用 350
21.5.3 視頻組合BSP
部分結構 351
21.6 Android 4.x視頻組合的
BSP實現 352
21.6.1 默認實現 352
21.6.2 Galaxy Nexus的
視頻組合 352
第22章 Android 4.x近場通信系統 357
22.1 近場通信系統概述 357
22.2 近場通信子系統的結構 358
22.2.1 總體結構 358
22.2.2 NFC本地庫 359
22.2.3 Android框架層的NFC
相關內容 360
22.2.4 NFC包 361
22.3 近場通信BSP的結構 365
22.3.1 NFC-NCI接口 365
22.3.2 NFC接口 366
22.4 近場通信BSP的實現 366
22.4.1 NCI-NFC的樁實現 366
22.4.2 NFC的樁實現 366
22.4.3 Galaxy Nexus 的
NFC實現 367
第23章 Android 4.2的電源控制 368
23.1 電源控制 368
23.2 電源控制的結構 368
23.2.1 總體結構 368
23.2.2 電源控制的使用 368
23.3 電源控制BSP的結構 369
23.4 電源控制BSP的實現 369
23.4.1 通用的電源控制實現 369
23.4.2 Galaxy Nexus的
電源控制實現 370
第24章 本地時間 372
24.1 本地時間子系統結構 372
24.1.1 本地時間的結構 372
24.1.2 本地時間的使用 372
24.2 本地時間BSP的結構 373
24.3 本地時間BSP的實現 373
第25章 Android 4.2密鑰 375
25.1 密鑰概述 375
25.2 安全和密鑰子系統結構 376
25.2.1 安全和密鑰的總體結構 376
25.2.2 keystore守護進程 376
25.2.3 android.security的內容 377
25.3 密鑰的BSP部分的結構 379
25.4 密鑰的BSP實現 380
25.4.1 通用的軟件密鑰實現 380
25.4.2 Galaxy Nexus 的
密鑰實現 381
第26章 電源管理 384
26.1 Android電源管理 384
26.2 Android內核空間的
電源管理 385
26.2.1 總體結構 385
26.2.2 wakelock 386
26.2.3 wakelock的用戶空間 388
26.2.4 earlysuspend部分 389
26.2.5 其他 391
26.3 Android用戶空間的
電源管理 392
26.3.1 電源管理的本地庫 392
26.3.2 電源管理的JNI庫 393
26.3.3 電源管理的Java部分 393


















26.4 電源管理的策略 394
26.4.1 驅動程序的變化 394
26.4.2 用戶空間的控制 396
第27章 恢復和升級 397
27.1 恢復和升級概述 397
27.1.1 Android的Recovery
系統的組成 397
27.1.2 Android的Recovery
系統的功能和運行流程 398
27.2 recovery系統 399
27.2.1 編譯系統 399
27.2.2 init.rc腳本 400
27.2.3 Recovery可執行程序和
相關的庫 401
27.3 Android系統交互的過程 405
27.3.1 Java部分 405
27.3.2 交互的場景 406
序: