Android底層開發技術實戰詳解:內核、移植和驅動(第2版) Android底层开发技术实战详解:内核、移植和驱动(第2版)

王振麗, 等

  • 出版商: 電子工業
  • 出版日期: 2015-03-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 582
  • 裝訂: 平裝
  • ISBN: 7121254417
  • ISBN-13: 9787121254413
  • 相關分類: Android

已絕版

買這商品的人也買了...

商品描述

<內容簡介>

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

<目錄>


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

序言
隨著3G/4G的到來,無線帶寬越來越高,使得更多內容豐富的應用程序裝入手機成為可能,如視頻通話、視頻點播、移動因特網衝浪和內容分享等。為了承載這些數據應用及快速部署,手機功能將會越來越智能,越來越開放。為了實現這些需求,必須有一個優秀的開發平臺來支持,在此由谷歌(Google)公司發起的OHA聯盟走在了業界的前列,2007年11月推出了開放的Android平臺,任何公司及個人都可以免費獲取源代碼及開發SDK。由於其開放性和優異性,Android平臺得到了業界廣泛的支持,其中包括各大手機廠商和知名的移動運營商等。繼2008年9月第一款基於Android平臺的手機G1發布之後,三星、摩托羅拉、索尼愛立信、LG等主流手機製造商都推出了自己的Android平臺手機。在2011年年底,Android超越了塞班和iOS,雄踞智能手機市場佔有率榜首的位置。根據國際數據公司(IDC)5月公佈的新數據,在2013年第一季度,Android和iOS系統佔的裝機量到所有智能手機出貨量的92.3%。在2013年頭三個月,安裝Android系統的新智能手機數量躍升至1.621億部,大大超過去年同期的9030萬部。這意味著,在銷往世界各地的所有新智能手機中,谷歌的移動操作系統的市場佔有率已經達到75%,與第一季度的59.1%相比有顯著提高。
畢竟Android平臺被推出的時間才短短六七年,瞭解Android平臺軟件開發技術的程序員還不多,如何迅速地推廣和普及Android平臺軟件開發技術,讓越來越多的人參與到Android應用的開發中,是整個產業鏈都在關註的一個話題。為了幫助開發者更快地進入Android開發行列,筆者特意精心編寫了本書。本書系統地講解了Android底層驅動開發和移植的基本知識,圖文並茂地幫助讀者學習和掌握各種驅動的開發常識,詳細講解了Android源代碼的方方面面。
從技術角度而言,Android是一種融入了全部Web應用的平臺。隨著版本的更新,從最初的觸屏到現在的多點觸摸,從普通的聯繫人到現在的數據同步,從簡單的Google Map到現在的導航系統,從基本的網頁瀏覽到現在的HTML 5 ,都說明Android已經逐漸穩定,而且功能越來越強大。此外,Android平臺不僅支持Java、C、C++等主流的編程語言,還支持Ruby、Python等腳本語言,甚至Google專為Android的應用開發推出了Simple語言,這使得Android有著非常廣泛的開發群體。
本書內容
在本書的內容中,詳細講解了Android底層技術和驅動開發的基本知識。本書內容新穎、知識全面、講解詳細,全書分為21章,具體內容分佈如下。
章主要內容
第1章什麼是驅動以及Linux內核源代碼簡單剖析
第2章搭建Linux開發環境,分析及編譯Android源代碼,在Linux環境下運行模擬器
(續表)
章主要內容
第3章Android移植的內容、驅動開發所要完成的任務,三種類型的驅動程序
第4章傳感器在HAL層的表現,HAL層的源代碼與移植
第5章Goldfish下的staging、Ashmen、Pmem、Alarm和Android Paranoid驅動
第6章MSM內核與MSM的移植
第7章OMAP內核與移植
第8章顯示系統的移植、調試與驅動程序實現
第9章MSM處理器和OMAP處理器平臺中輸入驅動的實現
第10章振動器的系統結構與移植
第11章音頻系統的層次、移植與不同平臺下的實現
第12章視頻輸出系統Overlay的分析、實現、調用
第13章OpenMax多媒體框架的層次和實現
第14章OpenCore引擎和Stagefright引擎的代碼結構與擴展
第15章傳感器系統的結構、移植與實現
第16章照相機系統的結構、移植與實現
第17章Wi-Fi系統、藍牙系統和定位系統的移植
第18章開發電話系統
第19章分析時鐘系統驅動,實現時鐘驅動程序的開發、移植和模擬器測試
第20章分析USB Gadget驅動,依次講解分析軟件結構、層次整合和USB設備枚舉
第21章Lights光系統和Battery電池系統