注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡計算機組織與體系結(jié)構(gòu)Android底層開發(fā)技術實戰(zhàn)詳解:內(nèi)核、移植和驅(qū)動(第2版)

Android底層開發(fā)技術實戰(zhàn)詳解:內(nèi)核、移植和驅(qū)動(第2版)

Android底層開發(fā)技術實戰(zhàn)詳解:內(nèi)核、移植和驅(qū)動(第2版)

定 價:¥79.00

作 者: 王振麗
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 程序設計 計算機/網(wǎng)絡 移動開發(fā)

ISBN: 9787121254413 出版時間: 2015-03-01 包裝:
開本: 頁數(shù): 字數(shù):  

內(nèi)容簡介

  本書從底層原理開始講起,結(jié)合真實的案例向讀者詳細介紹了Android內(nèi)核、移植和驅(qū)動開發(fā)的整個流程。全書分為21章,依次講解驅(qū)動移植的必要性, Goldfish、OMAP內(nèi)核和驅(qū)動解析,顯示系統(tǒng)、輸入系統(tǒng)、振動器系統(tǒng)、音頻系統(tǒng)、視頻輸出系統(tǒng)的驅(qū)動,OpenMax多媒體和多媒體插件框架,傳感器,照相機,Wi-Fi,藍牙和GPS,USB Gadget驅(qū)動,Lights光系統(tǒng)和Battery電池系統(tǒng)等。在每一章中,重點介紹了與Android驅(qū)動開發(fā)相關的底層知識,并對Android源碼進行了剖析。

作者簡介

  王振麗,吉林大學計算機碩士,精通C、C++、Linux、Java開發(fā)技術,擅長嵌入式系統(tǒng)、物聯(lián)網(wǎng)、大數(shù)據(jù)等開發(fā)技術,對藍牙技術、傳感器、NFC數(shù)據(jù)傳播、紅外傳輸技術有獨特的見解。畢業(yè)設計《大安移動機器人》成果申請國家專利,已經(jīng)被廣大制造業(yè)公司的精密機床設備所使用。畢業(yè)后就職于貝爾豪斯公司,負責智能家居系統(tǒng)的研究和開發(fā)和產(chǎn)品設計工作,帶領團隊獨立開發(fā)出多款功能強大的智能家居、健康儀器、智能電視、車載設備等大型系統(tǒng)。在Android底層架構(gòu)和驅(qū)動開發(fā)方面有著豐富的經(jīng)驗,著名硬件驅(qū)動開發(fā)專家。

圖書目錄

第1章 Android底層開發(fā)基礎 1
1.1 什么是驅(qū)動 1
1.1.1 驅(qū)動程序的魅力 1
1.1.2 手機中的驅(qū)動程序 2
1.2 開源還是不開源的問題 2
1.2.1 霧里看花的開源 2
1.2.2 從為什么選擇Java談為什么不
開源驅(qū)動程序 3
1.2.3 對驅(qū)動開發(fā)者來說是一把雙刃劍 4
1.3 Android和Linux 4
1.3.1 Linux簡介 4
1.3.2 Android和Linux的關系 5
1.4 簡析Linux內(nèi)核 7
1.4.1 內(nèi)核的體系結(jié)構(gòu) 7
1.4.2 和Android密切相關的Linux
內(nèi)核知識 9
1.5 分析Linux內(nèi)核源代碼很有必要 13
1.5.1 源代碼目錄結(jié)構(gòu) 14
1.5.2 Linux 3.10的特性 16
1.5.3 瀏覽源代碼的工具 17
1.5.4 為什么用匯編語言編寫內(nèi)核代碼 17
1.5.5 Linux內(nèi)核的顯著特性 18
1.5.6 學習Linux內(nèi)核的方法 26
第2章 分析Android源代碼 31
2.1 搭建Linux開發(fā)環(huán)境和工具 31
2.1.1 搭建Linux開發(fā)環(huán)境 31
2.1.2 設置環(huán)境變量 32
2.1.3 安裝編譯工具 32
2.2 獲取Android源代碼 33
2.3 分析并編譯Android源代碼 35
2.3.1 Android源代碼的結(jié)構(gòu) 35
2.3.2 編譯Android源代碼 40
2.3.3 運行Android源代碼 42
2.3.4 實踐演練――演示編譯Android
程序的兩種方法 43
2.4 編譯Android Kernel 46
2.4.1 獲取Goldfish內(nèi)核代碼 47
2.4.2 獲取MSM內(nèi)核代碼 49
2.4.3 獲取OMAP內(nèi)核代碼 49
2.4.4 編譯Android的Linux內(nèi)核 50
2.5 運行模擬器 51
2.5.1 Linux環(huán)境下運行模擬器的方法 52
2.5.2 模擬器輔助工具――adb 53
第3章 驅(qū)動需要移植 56
3.1 驅(qū)動開發(fā)需要做的工作 56
3.2 Android移植 58
3.2.1 移植的任務 59
3.2.2 移植的內(nèi)容 59
3.2.3 驅(qū)動開發(fā)的任務 60
3.3 Android對Linux的改造 60
3.3.1 Android對Linux內(nèi)核文件的改動 61
3.3.2 為Android構(gòu)建Linux的操作系統(tǒng) 62
3.4 內(nèi)核空間和用戶空間接口是一個媒介 63
3.4.1 內(nèi)核空間和用戶空間的相互作用 63
3.4.2 系統(tǒng)和硬件之間的交互 63
3.4.3 使用Relay實現(xiàn)內(nèi)核到用戶空
間的數(shù)據(jù)傳輸 65
3.5 三類驅(qū)動程序 68
3.5.1 字符設備驅(qū)動程序 68
3.5.2 塊設備驅(qū)動程序 76
3.5.3 網(wǎng)絡設備驅(qū)動程序 80
第4章 HAL層深入分析 81
4.1 認識HAL層 81
4.1.1 HAL層的發(fā)展 81
4.1.2 過去和現(xiàn)在的區(qū)別 83
4.2 分析HAL層源代碼 83
4.2.1 分析HAL moudle 83
4.2.2 分析mokoid工程 87
4.3 總結(jié)HAL層的使用方法 95
4.4 傳感器在HAL層的表現(xiàn) 97
4.4.1 HAL層的Sensor代碼 98
4.4.2 總結(jié)Sensor編程的流程 99
4.4.3 分析Sensor源代碼看Android API
與硬件平臺的銜接 100
4.5 移植總結(jié) 110
4.5.1 移植各個Android部件的方式 110
4.5.2 移植技巧之一――不得不說的
輔助工作 111
4.6 開發(fā)一個硬件驅(qū)動程序 117
4.6.1 源代碼文件wuming.h和
wuming.c 117
4.6.2 編譯配置處理 123
4.6.3 修改配置文件 124
4.6.4 驗證驅(qū)動程序 125
第5章 分析Goldfish內(nèi)核系統(tǒng) 127
5.1 Android專有驅(qū)動介紹 127
5.2 Goldfish基礎 128
5.3 Android專用驅(qū)動簡介 130
5.3.1 Logger驅(qū)動介紹 130
5.3.2 Low Memory Killer組件介紹 130
5.3.3 Timed Output驅(qū)動介紹 131
5.3.4 Timed Gpio驅(qū)動介紹 131
5.3.5 Ram Console驅(qū)動介紹 132
5.4 Ashmem驅(qū)動介紹 133
5.5 Pmem驅(qū)動介紹 133
5.6 Alarm驅(qū)動程序 134
5.7 USB Gadget驅(qū)動程序 134
5.8 Paranoid驅(qū)動介紹 135
5.9 Goldfish的設備驅(qū)動 136
第6章 MSM內(nèi)核和驅(qū)動解析 139
6.1 MSM基礎 139
6.1.1 常見MSM處理器產(chǎn)品 139
6.1.2 Snapdragon內(nèi)核介紹 140
6.2 移植MSM內(nèi)核簡介 141
6.3 移植MSM 143
6.3.1 Makefile文件 143
6.3.2 驅(qū)動和組件 144
6.3.3 設備驅(qū)動 146
6.3.4 高通特有的組件 148
第7章 OMAP內(nèi)核和驅(qū)動解析 151
7.1 OMAP基礎 151
7.1.1 OMAP簡析 151
7.1.2 常見OMAP處理器產(chǎn)品 151
7.1.3 開發(fā)平臺 152
7.2 OMAP內(nèi)核 152
7.3 移植OMAP體系結(jié)構(gòu) 154
7.3.1 移植OMAP平臺 154
7.3.2 移植OMAP處理器 157
7.4 移植Android專用驅(qū)動和組件 161
7.5 OMAP的設備驅(qū)動 162
7.5.1 顯示驅(qū)動程序 162
7.5.2 I2C總線驅(qū)動程序 162
7.5.3 攝像頭和視頻輸出驅(qū)動程序 164
7.5.4 觸摸屏和鍵盤驅(qū)動程序 165
7.5.5 實時時鐘驅(qū)動程序 166
7.5.6 音頻驅(qū)動程序 166
7.5.7 藍牙驅(qū)動程序 166
第8章 顯示系統(tǒng)驅(qū)動應用 167
8.1 顯示系統(tǒng)介紹 167
8.2 分析內(nèi)核層 168
8.2.1 分析接口文件fb.h 168
8.2.2 分析內(nèi)核實現(xiàn)文件fbmem.c 171
8.3 分析硬件抽象層 195
8.3.1 分析頭文件 195
8.3.2 分析硬件幀緩沖區(qū) 197
8.3.3 實現(xiàn)緩沖區(qū)的分配 199
8.3.4 顯示緩沖映射 200
8.3.5 分析管理庫文件LayerBuffer.cpp 201
8.4 分析顯示系統(tǒng)的驅(qū)動程序 202
8.4.1 Goldfish中的FrameBuffer驅(qū)
動程序 203
8.4.2 使用Gralloc模塊的驅(qū)動程序 205
8.4.3 分析MSM高通處理器中的顯
示驅(qū)動實現(xiàn) 215
8.4.4 分析OMAP處理器中的顯示
驅(qū)動實現(xiàn) 225
第9章 輸入系統(tǒng)驅(qū)動應用 228
9.1 輸入系統(tǒng)介紹 228
9.1.1 Android輸入系統(tǒng)結(jié)構(gòu)元素介紹 228
9.1.2 移植Android輸入系統(tǒng)時的工作 229
9.2 分析Input(輸入)系統(tǒng)驅(qū)動 230
9.2.1 分析頭文件 230
9.2.2 分析核心文件input.c 234
9.2.3 分析event機制 249
9.3 分析硬件抽象層 251
9.3.1 分析文件KeycodeLabels.h 252
9.3.2 分析文件KeyCharacterMap.h 256
9.3.3 分析Kl格式文件 257
9.3.4 分析kcm格式文件 258
9.3.5 分析文件EventHub.cpp 258
第10章 振動器系統(tǒng)驅(qū)動 263
10.1 振動器系統(tǒng)結(jié)構(gòu) 263
10.2 分析硬件抽象層 265
10.3 分析JNI層部分 266
10.4 分析Java層部分 267
10.5 實現(xiàn)移植工作 271
10.5.1 移植振動器驅(qū)動程序 271
10.5.2 實現(xiàn)硬件抽象層 271
10.6 在MSM平臺實現(xiàn)振動器驅(qū)動 272
第11章 音頻系統(tǒng)驅(qū)動 276
11.1 音頻系統(tǒng)結(jié)構(gòu) 276
11.2 分析音頻系統(tǒng)的層次 277
11.2.1 層次說明 277
11.2.2 Media庫中的Audio框架 278
11.2.3 本地代碼 280
11.2.4 分析JNI代碼 283
11.2.5 Java層代碼簡介 284
11.3 移植Audio系統(tǒng)的工作 285
11.3.1 我們的工作 285
11.3.2 分析硬件抽象層 285
11.3.3 分析AudioFlinger中的Audio
硬件抽象層的實現(xiàn) 287
11.3.4 真正實現(xiàn)Audio硬件抽象層 293
11.4 在MSM平臺實現(xiàn)Audio驅(qū)動系統(tǒng) 293
11.4.1 實現(xiàn)Audio驅(qū)動程序 293
11.4.2 實現(xiàn)硬件抽象層 294
第12章 視頻輸出系統(tǒng)驅(qū)動 299
12.1 視頻輸出系統(tǒng)結(jié)構(gòu) 299
12.2 需要移植的部分 301
12.3 分析硬件抽象層 301
12.3.1 Overlay系統(tǒng)硬件抽象層的接口 301
12.3.2 實現(xiàn)Overlay系統(tǒng)的硬件抽象層 304
12.3.3 實現(xiàn)接口 305
12.4 實現(xiàn)Overlay硬件抽象層 306
12.5 在OMAP平臺實現(xiàn)Overlay系統(tǒng) 307
12.5.1 實現(xiàn)輸出視頻驅(qū)動程序 307
12.5.2 實現(xiàn)Overlay硬件抽象層 309
12.6 系統(tǒng)層調(diào)用Overlay HAL的架構(gòu) 314
12.6.1 調(diào)用Overlay HAL的架構(gòu)的
流程 314
12.6.2 S3C6410 Android Overlay的
測試代碼 317
第13章 OpenMax多媒體框架 320
13.1 OpenMax基本層次結(jié)構(gòu) 320
13.2 分析OpenMax框架構(gòu)成 321
13.2.1 OpenMax總體層次結(jié)構(gòu) 321
13.2.2 OpenMax IL層的結(jié)構(gòu) 322
13.2.3 Android中的OpenMax 325
13.3 實現(xiàn)OpenMax IL層接口 325
13.3.1 OpenMax IL層的接口 325
13.3.2 在OpenMax IL層中需要做什么 331
13.3.3 研究Android中的OpenMax
適配層 332
13.4 在OMAP平臺實現(xiàn)OpenMax IL 334
13.4.1 實現(xiàn)文件 334
13.4.2 分析TI OpenMax IL的核心 335
13.4.3 實現(xiàn)TI OpenMax IL組件實例 338
第14章 多媒體插件框架 343
14.1 Android多媒體插件 343
14.2 需要移植的內(nèi)容 344
14.3 OpenCore引擎 345
14.3.1 OpenCore層次結(jié)構(gòu) 345
14.3.2 OpenCore代碼結(jié)構(gòu) 346
14.3.3 OpenCore編譯結(jié)構(gòu) 347
14.3.4 OpenCore OSCL 351
14.3.5 實現(xiàn)OpenCore中的OpenMax
部分 353
14.3.6 OpenCore的擴展 366
14.4 Stagefright引擎 371
14.4.1 Stagefright代碼結(jié)構(gòu) 372
14.4.2 Stagefright實現(xiàn)OpenMax接口 372
14.4.3 Video Buffer傳輸流程 376
第15章 傳感器系統(tǒng) 381
15.1 傳感器系統(tǒng)的結(jié)構(gòu) 381
15.2 分析需要移植的內(nèi)容 383
15.2.1 移植驅(qū)動程序 383
15.2.2 移植硬件抽象層 384
15.2.3 實現(xiàn)上層部分 385
15.3 在模擬器中實現(xiàn)傳感器驅(qū)動 389
第16章 照相機系統(tǒng) 395
16.1 Camera系統(tǒng)的結(jié)構(gòu) 395
16.2 分析需要移植的內(nèi)容 397
16.3 移植和調(diào)試 398
16.3.1 V4L2驅(qū)動程序 398
16.3.2 硬件抽象層 405
16.4 實現(xiàn)Camera系統(tǒng)的硬件抽象層 409
16.4.1 Java程序部分 409
16.4.2 Camera的Java本地調(diào)用部分 410
16.4.3 Camera的本地庫libui.so 411
16.4.4 Camera服務libcameraservice.so 412
16.5 在MSM平臺實現(xiàn)Camera驅(qū)動系統(tǒng) 416
16.6 在OMAP平臺實現(xiàn)Camera驅(qū)動系統(tǒng) 419
第17章 Wi-Fi系統(tǒng)、藍牙系統(tǒng)和
GPS系統(tǒng) 421
17.1 Wi-Fi系統(tǒng) 421
17.1.1 Wi-Fi系統(tǒng)的結(jié)構(gòu) 421
17.1.2 需要移植的內(nèi)容 423
17.1.3 移植和調(diào)試 423
17.1.4 OMAP平臺實現(xiàn)Wi-Fi 430
17.1.5 配置Wi-Fi的流程 432
17.1.6 具體演練――在Android下
實現(xiàn)Ethernet 435
17.2 藍牙系統(tǒng) 436
17.2.1 藍牙系統(tǒng)的結(jié)構(gòu) 437
17.2.2 需要移植的內(nèi)容 438
17.2.3 具體移植 439
17.2.4 MSM平臺的藍牙驅(qū)動 441
17.3 定位系統(tǒng) 443
17.3.1 定位系統(tǒng)的結(jié)構(gòu) 443
17.3.2 分析需要移植的內(nèi)容 445
17.3.3 分析驅(qū)動程序 445
17.3.4 分析硬件抽象層 445
17.3.5 分析上層應用部分 448
第18章 電話系統(tǒng) 457
18.1 電話系統(tǒng)基礎 457
18.1.1 電話系統(tǒng)簡介 457
18.1.2 電話系統(tǒng)結(jié)構(gòu) 459
18.2 需要移植的內(nèi)容 460
18.3 移植和調(diào)試 460
18.3.1 驅(qū)動程序 461
18.3.2 RIL接口 462
18.4 電話系統(tǒng)實現(xiàn)流程分析 465
18.4.1 初始啟動流程 465
18.4.2 request流程 467
18.4.3 response流程 470
第19章 分析時鐘系統(tǒng)驅(qū)動 472
19.1 Alarm系統(tǒng)基礎 472
19.1.1 Alarm層次結(jié)構(gòu)介紹 472
19.1.2 我們需要移植的內(nèi)容 474
19.2 分析RTC驅(qū)動程序 474
19.3 分析Alarm驅(qū)動程序 475
19.3.1 分析文件android_alarm.h 475
19.3.2 分析文件alarm.c 476
19.3.3 分析文件alarm-dev.c 488
19.4 分析JNI層 497
19.5 分析Java層 498
19.5.1 分析AlarmManagerService類 499
19.5.2 分析AlarmManager類 508
19.6 模擬器環(huán)境的具體實現(xiàn) 509
第20章 分析USB Gadget驅(qū)動 511
20.1 分析Linux內(nèi)核的USB驅(qū)動程序 511
20.1.1 USB設備基礎 511
20.1.2 分析USB 和sysfs的聯(lián)系 516
20.1.3 分析urb通信方式 518
20.1.4 分析USB驅(qū)動的例程 524
20.2 分析USB Gadget驅(qū)動 536
20.2.1 分析軟件結(jié)構(gòu) 536
20.2.2 層次整合 546
20.2.3 USB設備枚舉 557
第21章 其他系統(tǒng) 573
21.1 Lights光系統(tǒng) 573
21.1.1 Lights光系統(tǒng)的結(jié)構(gòu) 573
21.1.2 需要移植的內(nèi)容 574
21.1.3 移植和調(diào)試 575
21.1.4 MSM平臺實現(xiàn)光系統(tǒng) 577
21.2 Battery電池系統(tǒng) 577
21.2.1 Battery系統(tǒng)的結(jié)構(gòu) 578
21.2.2 需要移植的內(nèi)容 579
21.2.3 移植和調(diào)試 579
21.2.4 在模擬器中實現(xiàn)電池系統(tǒng) 582

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號