-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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書號: 42129
詢問書籍請說出此書號!

缺書
NT售價: 480

出版日:7/1/2015
頁數:798
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302397458
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:


  2007年11月5日,Google公司宣布的基于Linux平臺的開源手機操作系統Android誕生,該平臺號稱是首個為移動終端打造的真正開放和完整的移動軟件。本書將引領廣大讀者一起探討這款系統的神奇 之處。
市場占有率高居第一
  截至2014年1月,Android在手機市場上的占有率從2013年的68.8%上升到78.9%。而iOS則從2013年的19.4%下降到15.5%,WP系統從原來的2.7%小幅上升到3.6%。
  從數據上來看,Android平臺占據了市場的主導地位,繼續稱當老大的角色。Android市場的占有率增加幅度較大,WP市場小幅增長,但iOS卻有所下降。就目前來看,智能手機的市場已經飽和,大多數人都在各個平臺中轉換。而就在這樣的市場背景下,Android還增長了10%左右的占有率,確實不易。
為開發人員提供了滋長的“沃土”
  (1)保證開發人員可以迅速轉型為Android應用開發
  Android應用程序是通過Java語言開發的,只要具備Java開發基礎,就能很快地上手并掌握。作為單獨的Android應用開發,對Java編程門檻的要求并不高,即使是沒有編程經驗的門外漢,也可以在突擊學習Java之后學習Android。另外,Android完全支持2D、3D和數據庫,并且和瀏覽器實現了集成。所以通過Android平臺,程序員可以迅速、高效地開發出絢麗多彩的應用,例如常見的工具、管理、互聯網和游 戲等。
  (2)定期召開獎金豐厚的Android大賽
  為了吸引更多的用戶使用Android開發,Google公司已經成功舉辦了獎金為數千萬美元的開發者競賽,鼓勵開發人員創建出創意十足、十分有用的軟件。這種大賽對于開發人員來說,不但能練習自己的開發水平,并且高額的獎金也是學員們學習的動力。
  (3)開發人員可以利用自己的作品賺錢
  為了能讓Android平臺吸引更多的關注,Google公司提供了一個專門下載Android應用的門店:Android Market,地址是https://play.google.com/store。這個門店允許開發人員發布應用程序,也允許Android用戶下載獲取自己喜歡的程序。作為開發者,需要申請開發者賬號,申請后才能將自己的程序上傳到Android Market,并且可以對自己的軟件進行定價。只要你的軟件程序足夠吸引人,你就可以獲得很好的金錢回報,這樣實現了程序員學習和賺錢兩不誤,因此吸引了更多的開發人員加入Android大軍中來。
本書的內容
  本書內容分為3篇,共22章,循序漸進地講解了Android底層系統中的典型驅動方面的知識。本書從獲取源碼和源碼結構分析講起,依次講解了基礎知識篇、Android專有驅動篇和典型驅動移植篇3部分的基本知識。在講解每一個驅動時,從Android系統的架構開始講起,從內核分析到具體的驅動實現,再從JNI層架構分析到Java應用層的接口運用,最后到典型驅動系統移植和開發,徹底剖析了每一個典型驅動系統的完整實現流程。本書幾乎涵蓋了所有Android底層驅動的內容,講解方法通俗易懂,內容翔實,不但適合應用高手們的學習,也特別有利于初學者學習和消化。
本書的版本
  Android系統自2008年9月發布第一個版本1.1以來,截至2014年10月發布最新版本5.0,一共存在十多個版本。由此可見,Android系統升級頻率較快,一年之中最少有兩個新版本誕生。如果過于追求新版本,會造成力不從心的結果。所以在此建議廣大讀者不必追求最新的版本,只需關注最流行的版本即可。據官方統計,截至2014年10月25日,占據前3位的版本分別是Android 4.4、Android 4.3和Android 4.2。其中從Android 4.4開始,Android L和Android 5.0的底層架構知識基本類似。其實這3個版本的區別并不是很大,只是在頂層API應用層的細節上進行了更新。為了及時學習Android系統的最新功能,本書中使用的版本是目前(本書成稿時)最新的Android 5.0。
本書特色
  本書內容十分豐富,分析細致、精準、全面。我們的目標是通過一本圖書,提供多本圖書的價值,讀者可以根據自己的需要有選擇地閱讀。在內容的編寫上,本書具有以下特色。
  1.內容全面,講解細致
  本書幾乎涵蓋了Android系統中所有的獨有驅動和設備驅動,詳細講解了每一個典型驅動的實現過程和具體移植方法。每一個知識點都力求用通俗易懂的語言詳盡展現在讀者面前。
  2.遵循合理的主線進行講解
  為了使廣大讀者徹底了解Android平臺中的各個驅動系統,在講解每一個驅動系統時,從Linux內核開始講起,依次剖析了驅動層實現、JNI層分析、Java應用和系統移植改造等內容,遵循了從底層到頂層,實現了驅動系統大揭秘的目標。
  3.章節獨立,自由閱讀
  本書中的每一章內容都可以獨自成書,讀者既可以按照本書編排的章節順序進行學習,也可以根據自己的需求對某一章節進行針對性的學習。與傳統的計算機書籍相比,閱讀本書會更輕松。
  4.驅動典型,實用性強
  本書講解了現實中最典型驅動系統的實現和移植知識,這些驅動都是在商業項目中最需要的部分,讀者可以直接將本書中的知識應用到自己的項目中,實現無縫對接。
讀者對象
  本書適合作為Android驅動開發者、Linux開發人員、Android底層學習人員、Android愛好者、Android源碼分析人員、Android應用開發人員的學習用書,也可以作為相關培訓學校和大專院校相關專業的教學 用書。
  參與本書編寫的人員還有周秀、付松柏、鄧才兵、鐘世禮、譚貞軍、張加春、王教明、萬春潮、郭慧玲、侯恩靜、程娟、王文忠、陳強、何子夜、李天祥、周銳、朱桂英、張元亮、張韶青、秦丹楓。本團隊在編寫過程中,得到了清華大學出版社工作人員的大力支持,正是各位編輯的求實、耐心和效率,才使得本書在這么短的時間內出版。此外也十分感謝我們的家人,在寫作時給予了巨大的支持。另外告知各位讀者,因編者水平有限,如有紕漏和不盡如人意之處,懇請讀者提出意見或建議,以便修訂并使之更臻完善。另外我們提供了售后支持網站:http://www.chubanbook.com/和QQ群192153124,讀者朋友如有疑問可以在此提出,一定會得到滿意的答復。
  
  
  編 者 ?
  
  
  

  
  
  
II
  
  
III
  
  
  
  
  
  

內容簡介:

Android系統從誕生到現在,在短短的幾年時間里,便憑借其操作易用性和開發的簡潔性,贏得了廣大用戶和開發者的支持。本書內容分為3篇,共22章,循序漸進地講解了Android底層系統中的典型驅動方面的知識。本書從獲取源碼和源碼結構分析講起,依次講解了基礎知識篇、Android專有驅動篇和典型驅動移植篇3部分的基本知識。在講解每一個驅動時,從Android系統的架構開始講起,從內核分析到具體的驅動實現,再從JNI層架構分析到Java應用層的接口運用,最后到典型驅動系統移植和開發,徹底剖析了每一個典型驅動系統的完整實現流程。本書幾乎涵蓋了所有Android底層驅動的內容,講解方法通俗易懂,內容翔實,不但適合應用高手的學習,也特別有利于初學者學習和消化。
本書適合作為Android驅動開發者、Linux開發人員、Android底層學習人員、Android愛好者、Android源碼分析人員、Android應用開發人員的學習用書,也可以作為相關培訓學校和大專院校相關專業的教學用書。
目錄:

第1篇 基礎知識篇

第1章  Android底層開發基礎 2

1.1  Android系統介紹 2

1.2  Android系統架構介紹 2

1.2.1  底層操作系統層(OS) 3

1.2.2  各種庫(Libraries)和Android運行環境

(RunTime) 3

1.2.3  應用程序框架(Application Framework) 4

1.2.4  頂層應用程序(Application) 4

1.3  獲取Android源碼 5

1.3.1  在Linux系統中獲取Android源碼 5

1.3.2  在Windows平臺上獲取Android源碼 7

1.4  分析Android源碼結構 9

1.4.1  總體結構 10

1.4.2  應用程序部分 11

1.4.3  應用程序框架部分 13

1.4.4  系統服務部分 13

1.4.5  系統程序庫部分 15

1.4.6  系統運行庫部分 18

1.4.7  硬件抽象層部分 19

1.5  編譯源碼 20

1.5.1  搭建編譯環境 20

1.5.2  在模擬器中運行 22

1.5.3  編譯源碼生成SDK 23

第2章  Android驅動開發基礎 28

2.1  驅動程序基礎 28

2.1.1  什么是驅動程序 28

2.1.2  驅動開發需要做的工作 29

2.2  Linux開發基礎 30

2.2.1  Linux簡介 30

2.2.2  Linux的發展趨勢 31

2.2.3  Android基于Linux系統 31

2.2.4  Android和Linux內核的區別 32

2.2.5  Android獨有的驅動 34

2.2.6  為Android構建Linux的操作系統 35

2.3  Linux內核結構 35

2.3.1  Linux內核的體系結構 35

2.3.2  和Android驅動開發相關的內核知識 37

2.4  分析Linux內核源碼 40

2.4.1  源碼目錄結構 40

2.4.2  瀏覽源碼的工具 42

2.4.3  GCC特性 43

2.4.4  鏈表的重要性 46

2.4.5  Kconfig和Makefile 48

2.5  學習Linux內核的方法 50

2.5.1  分析USB子系統的代碼 50

2.5.2  分析USB系統的初始化代碼 50

2.6  Linux中的3類驅動程序 54

2.6.1  字符設備驅動 54

2.6.2  塊設備驅動 61

2.6.3  網絡設備驅動 65

2.7  Android系統移植基礎 65

2.7.1  移植的任務 65

2.7.2  需要移植的內容 66

2.7.3  驅動開發需要做的工作 67

2.8  內核空間和用戶空間之間的接口 67

2.8.1  內核空間和用戶空間的相互作用 67

2.8.2  實現系統和硬件之間的交互 67

2.8.3  從內核到用戶空間傳輸數據 69

2.9  編寫JNI方法 72

第3章  主流內核系統解析 76

3.1  Goldfish內核和驅動解析 76

3.1.1  Goldfish基礎 77

3.1.2  Logger驅動 78

3.1.3  Low Memory Killer組件 79

3.1.4  Timed Output驅動 79

3.1.5  Timed Gpio驅動 80

3.1.6  Ram Console驅動 80

3.1.7  Ashmem驅動 81

3.1.8  Pmem驅動 81

3.1.9  Alarm驅動 81

3.1.10  USB Gadget驅動 82

  

3.1.11  Paranoid驅動介紹 82

3.1.12  Goldfish的設備驅動 83

3.2  MSM內核和驅動架構 85

3.2.1  高通公司介紹 85

3.2.2  常見的MSM處理器產品 86

3.2.3  MSM內核移植 87

3.2.4  Makefile文件 88

3.2.5  驅動和組件 90

3.2.6  設備驅動 92

3.2.7  高通特有的組件 94

第2篇 Android專有驅動篇

第4章  分析硬件抽象層 98

4.1  HAL基礎 98

4.1.1  推出HAL的背景 98

4.1.2  HAL的基本結構 99

4.2  分析HAL module架構 101

4.2.1  結構體hw_module_t 101

4.2.2  結構體hw_module_methods_t 102

4.2.3  結構體hw_device_t 103

4.3  分析文件hardware.c 103

4.3.1  尋找動態鏈接庫的地址 103

4.3.2  數組variant_keys 104

4.3.3  載入相應的庫 104

4.3.4  獲得hw_module_t結構體 105

4.4  分析硬件抽象層的加載過程 106

4.5  分析硬件訪問服務 109

4.5.1  定義硬件訪問服務接口 109

4.5.2  具體實現 110

4.6  分析Mokoid實例 111

4.6.1  獲取實例工程源碼 112

4.6.2  直接調用service方法的實現代碼 113

4.6.3  通過Manager調用service的實現代碼 117

4.7  HAL和系統移植 120

4.7.1  移植各個Android部件的方式 120

4.7.2  設置設備權限 121

4.7.3  init.rc初始化 125

4.7.4  文件系統的屬性 125

4.8  開發自己的HAL驅動程序 126

4.8.1  封裝HAL接口 126

4.8.2  開始編譯 129

第5章  Binder通信驅動詳解 130

5.1  分析Binder驅動程序 130

5.1.1  數據結構binder_work 130

5.1.2  結構體binder_node 131

5.1.3  結構體binder_ref 132

5.1.4  通知結構體binder_ref_death 133

5.1.5  結構體binder_buffer 133

5.1.6  結構體binder_proc 134

5.1.7  結構體binder_thread 135

5.1.8  結構體binder_transaction 136

5.1.9  結構體binder_write_read 136

5.1.10  Binder驅動協議 137

5.1.11  枚舉BinderDriverReturnProtocol 137

5.1.12  結構體binder_ptr_cookie和

binder_transaction_data 138

5.1.13  結構體flat_binder_object 139

5.1.14  設備初始化 139

5.1.15  打開Binder設備文件 141

5.1.16  實現內存映射 142

5.1.17  釋放物理頁面 147

5.1.18  分配內核緩沖區 148

5.1.19  釋放內核緩沖區 150

5.1.20  查詢內核緩沖區 152

5.2  Binder封裝庫驅動 153

5.2.1  Binder的3層結構 153

5.2.2  Binder驅動的同事——類BBinder 154

5.2.3  BpRefBase代理類 157

5.2.4  驅動交互類IPCThreadState 158

5.3  初始化Java層Binder框架 160

5.3.1  搭建交互關系 161

5.3.2  實現Binder類的初始化 161

5.3.3  實現BinderProxy類的初始化 162

5.4  實體對象binder_node的驅動 163

5.4.1  定義實體對象 164

5.4.2  增加引用計數 165

5.4.3  減少引用計數 166

5.5  本地對象BBinder驅動 167

5.5.1  引用運行的本地對象 167

5.5.2  處理接口協議 173

5.6  引用對象binder_ref驅動 177

5.7  代理對象BpBinder驅動 180

5.7.1  創建Binder代理對象 180

5.7.2  銷毀Binder代理對象 181

第6章  Logger驅動架構詳解 185

6.1  分析Logger驅動程序 185

6.1.1  分析頭文件 185

6.1.2  驅動實現文件 186

6.2  日志庫Liblog驅動 201

6.2.1  定義指針的初始化操作 202

6.2.2  記錄日志 203

6.2.3  設置寫入日志記錄的類型 204

6.2.4  向Logger日志驅動程序寫入日志記錄 205

6.2.5  記錄日志數據函數 206

6.3  日志寫入接口驅動 206

6.3.1  C/C++層的寫入接口 207

6.3.2  Java層的寫入接口 208

第7章  Ashmem驅動詳解 217

7.1  分析Ashmem驅動程序 217

7.1.1  基礎數據結構 217

7.1.2  驅動初始化 218

7.1.3  打開匿名共享內存設備文件 219

7.1.4  內存映射 222

7.1.5  讀寫操作 223

7.1.6  鎖定和解鎖 225

7.1.7  回收內存塊 230

7.2  C++訪問接口層 231

7.2.1  接口MemoryHeapBase的服務器端

實現 231

7.2.2  接口MemoryHeapBase的客戶端實現 236

7.2.3  接口MemoryBase的服務器端實現 240

7.2.4  接口MemoryBase的客戶端實現 242

7.3  實現Java訪問的接口層 243

7.4  實戰演練——讀取內核空間的數據 247

第8章  搭建測試環境 250

8.1  搭建S3C6410開發環境 250

8.1.1  S3C6410介紹 250

8.1.2  OK6410介紹 251

8.1.3  安裝minicom 251

8.1.4  燒寫Android系統 253

8.2  其他開發環境介紹 257

8.2.1  基于Cortex-A8的DMA-210XP開發板 257

8.2.2  基于Cortex-A8的QT210開發板 258

8.2.3  X210CV3開發板 259

8.3  測試驅動的方法 259

8.3.1  使用Ubuntu Linux測試驅動 262

8.3.2  在Android模擬器中測試驅動 263

第9章  低內存管理驅動 266

9.1  OOM機制 266

9.1.1  OOM機制基礎 266

9.1.2  分析OOM機制的具體實現 267

9.2  Android系統的Low Memory Killer 

架構機制 273

9.3  Low Memory Killer驅動詳解 274

9.3.1  Low Memory Killer驅動基礎 274

9.3.2  分析核心功能 275

9.3.3  設置用戶接口 278

9.4  實戰演練——從內存池獲取對象 280

9.5  實戰演練——使用用戶程序讀取

內核空間的數據 282

  

第3篇 典型驅動移植篇

第10章  電源管理驅動 286

10.1  Power Management架構基礎 286

10.2  分析Framework層 287

10.2.1  文件PowerManager.java 287

10.2.2  提供PowerManager功能 288

10.3  JNI層架構分析 309

10.3.1  定義兩層之間的接口函數 309

10.3.2  與Linux Kernel層進行交互 311

10.4  Kernel(內核)層架構分析 311

10.4.1  文件power.c 312

10.4.2  文件earlysuspend.c 314

10.4.3  文件wakelock.c 315

10.4.4  文件resume.c 317

10.4.5  文件suspend.c 317

10.4.6  文件main.c 318

10.4.7  proc文件 319

10.5  wakelock和early_suspend 319

10.5.1  wakelock的原理 319

10.5.2  early_suspend原理 320

10.5.3  Android休眠 321

10.5.4  Android喚醒 323

10.6  Battery電池系統架構和管理 323

10.6.1  實現驅動程序 324

10.6.2  實現JNI本地代碼 325

10.6.3  Java層代碼 325

10.6.4  實現Uevent部分 327

10.7  JobScheduler節能調度機制 331

10.7.1  JobScheduler機制的推出背景 331

10.7.2  JobScheduler的實現 332

10.7.3  實現操作調度 332

10.7.4  封裝調度任務 335

第11章  PMEM內存驅動架構 339

11.1  PMEM初步 339

11.1.1  什么是PMEM 339

11.1.2  Platform設備基礎 339

11.2  PMEM驅動架構 341

11.2.1  設備實現 341

11.2.2  PMEM驅動的具體實現 343

11.2.3  調用PMEM驅動的流程 367

11.3  用戶空間接口 367

11.3.1  釋放位圖內存 368

11.3.2  釋放位圖內存空間 369

11.3.3  獲取位圖占用內存 370

11.4  實戰演練——將PMEM加入到

內核中 370

11.5  實戰演練——將PMEM加入到

內核中 372

11.6  實戰演練——PMEM在Camera中的

應用 373

11.7  實戰演練——PMEM的移植與測試 375

第12章  調試機制驅動Ram Console 378

12.1  Ram Console介紹 378

12.2  實現Ram Console 378

12.2.1  定義結構體ram_console_platform_data 379

12.2.2  實現具體功能 379

第13章  USB Gadget驅動 389

13.1  分析Linux內核的USB驅動程序 389

13.1.1  USB設備基礎 389

13.1.2  USB和sysfs 393

13.1.3  urb通信 396

13.2  USB Gadget驅動架構詳解 401

13.2.1  分析軟件結構 401

13.2.2  層次整合 411

13.2.3  USB設備枚舉 421

13.3  實戰演練——USB驅動例程分析 437

13.3.1  結構體usb_device_id 437

13.3.2  結構體usb_driver 439

13.3.3  注冊USB驅動程序 440

13.3.4  加載和卸載USB骨架程序模塊 441

13.3.5  探測回調函數 441

13.3.6  清理數據 443

13.3.7  函數skel_write()和skel_write_bulk_

callback() 444

13.3.8  獲取USB的接口 446

13.3.9  釋放不需要的資源 447

13.3.10  字符設備函數 448

13.3.11  讀取的數據量 449

13.4  實戰演練 450

13.4.1  移植USB Gadget驅動 450

13.4.2  移植USB HOST驅動 452

第14章  Time Device驅動 453

14.1  Timed Output驅動架構 453

14.1.1  設備類 453

14.1.2  分析Timed Output驅動的具體實現 458

14.1.3  實戰演練——實現設備的讀寫操作 460

14.2  Timed Gpio驅動架構 461

14.2.1  分析文件timed_gpio.h 462

14.2.2  分析文件timed_gpio.c 462

第15章  警報器系統驅動Alarm 467

15.1  Alarm系統基礎 467

15.1.1  Alarm層次結構介紹 467

15.1.2  需要移植的內容 468

15.2  RTC驅動程序架構 468

15.3  Alarm驅動架構 469

15.3.1  分析文件android_alarm.h 469

15.3.2  分析文件alarm.c 471

15.3.3  分析文件alarm-dev.c 483

15.4  JNI層詳解 491

15.5  Java層詳解 493

15.5.1  分析AlarmManagerService類 493

15.5.2  分析AlarmManager類 501

15.6  模擬器環境的具體實現 503

15.7  實戰演練 504

15.7.1  編寫PCF8563芯片的RTC驅動程序 504

15.7.2  在2440移植RTC驅動程序 507

15.7.3  在mini2440開發板上的移植 508

15.7.4  實現一個秒表定時器 509

第16章  振動器驅動架構和移植 512

16.1  振動器系統架構 512

16.2  硬件抽象層架構 513

16.3  JNI層架構 514

16.4  Java層架構 515

16.5  實戰演練——移植振動器系統 519

16.5.1  移植振動器驅動程序 519

16.5.2  實現硬件抽象層 520

16.6  實戰演練——在MSM平臺實現

振動器驅動 520

16.7  實戰演練——在MTK平臺實現

振動器驅動 523

16.8  實戰演練——移植振動器驅動 526

第17章  輸入系統驅動 527

17.1  輸入系統架構分析 527

17.2  移植輸入系統驅動的方法 528

17.3  Input(輸入)系統驅動詳解 529

17.3.1  分析頭文件 529

17.3.2  分析核心文件input.c 533

17.3.3  event機制詳解 548

17.4  硬件抽象層詳解 551

17.4.1  處理用戶空間 551

17.4.2  定義按鍵的字符映射關系 555

17.4.3  KL格式的按鍵布局文件 556

17.4.4  KCM格式的按鍵字符映射文件 557

17.4.5  分析文件EventHub.cpp 558

17.5  實戰演練 561

17.5.1  在內置模擬器中實現輸入驅動 562

17.5.2  在MSM高通處理器中實現輸入驅動 562

17.5.3  在Zoom平臺中實現輸入驅動 571

第18章  LCD顯示驅動 573

18.1  LCD系統介紹 573

18.2  FrameBuffer內核層詳解 573

18.2.1  分析接口文件fb.h 574

18.2.2  內核實現文件 577

18.3  硬件抽象層詳解 600

18.3.1  Gralloc模塊的頭文件 601

18.3.2  硬件幀緩沖區 603

18.3.3  顯示緩沖區的分配 604

18.3.4  顯示緩沖映射 605

18.3.5  分析管理庫文件LayerBuffer.cpp 606

18.4  Goldfish中的FrameBuffer驅動程序

詳解 607

18.5  使用Gralloc模塊的驅動程序 610

18.5.1  文件gralloc.cpp 611

18.5.2  文件mapper.cpp 614

18.5.3  文件framebuffer.cpp 615

18.6  MSM高通處理器中的顯示驅動 620

18.6.1  msm fb設備的文件操作函數接口 621

18.6.2  高通msm fb的driver接口 621

18.6.3  特殊的iocttl 621

18.7  MSM中的Gralloc驅動程序詳解 623

18.7.1  文件gralloc.cpp 623

18.7.2  文件framebuffer.cpp 624

18.7.3  文件gralloc.cpp 627

18.8  OMAP處理器中的顯示驅動實現 630

18.8.1  文件omapfb-main.c 631

18.8.2  文件omapfb.h 633

18.9  實戰演練 633

18.9.1  S3C2440上的LCD驅動 633

18.9.2  編寫訪問FrameBuffer設備文件的驅動 658

18.9.3  在S3C6410下移植FrameBuffer驅動 659

第19章  音頻系統驅動 664

19.1  音頻系統架構基礎 664

19.1.1  層次說明 665

19.1.2  Media庫中的Audio框架 665

19.2  音頻系統層次詳解 668

19.2.1  本地代碼詳解 668

19.2.2  JNI代碼詳解 670

19.2.3  Java層代碼詳解 671

19.3  移植Audio系統 672

19.3.1  移植需要做的工作 672

19.3.2  硬件抽象層移植分析 672

19.3.3  AudioFlinger中的Audio硬件抽象層 674

19.3.4  真正實現Audio硬件抽象層 679

19.4  實戰演練——在MSM平臺實現

Audio驅動 680

19.4.1  實現Audio驅動程序 680

19.4.2  實現硬件抽象層 681

19.5  實戰演練——在OSS平臺實現

Audio驅動 684

19.5.1  OSS驅動基礎 685

19.5.2  函數mixer() 685

19.6  實戰演練——在ALSA平臺實現

Audio系統 692

19.6.1  注冊音頻設備和音頻驅動 692

19.6.2  在Android中使用ALSA聲卡 693

19.6.3  在OMAP平臺移植Android的

ALSA聲卡驅動 701

19.6.4  基于ARM的AC97音頻驅動 704

第20章  Overlay系統驅動詳解 710

20.1  視頻輸出系統結構 710

20.2  移植Overlay系統 711

20.3  硬件抽象層詳解 711

20.3.1  Overlay系統硬件抽象層的接口 711

20.3.2  實現Overlay系統的硬件抽象層 714

20.3.3  實現Overlay接口 714

20.4  實現Overlay硬件抽象層 715

20.5  實戰演練——在OMAP平臺實現

Overlay系統 717

20.5.1  實現輸出視頻驅動程序 717

20.5.2  實現Overlay硬件抽象層 719

20.6  實戰演練——在系統層調用

Overlay HAL 724

20.6.1  測試文件 724

20.6.2  在Android系統中創建Overlay 725

20.6.3  管理Overlay HAL模塊 726

20.6.4  S3C6410 Android Overlay的測試代碼 727

第21章  照相機驅動 729

21.1  Camera系統的結構 729

21.1.1  Java程序部分 731

21.1.2  Camera的Java本地調用部分 731

21.1.3  Camera的本地庫libui.so 732

21.1.4  Camera服務libcameraservice.so 733

21.2  移植Camera系統 737

21.2.1  實現V4L2驅動 737

21.2.2  實現硬件抽象層 744

21.3  實戰演練——在MSM平臺實現

Camera驅動 747

21.4  實戰演練——在OMAP平臺實現

Camera驅動 750

21.5  Android實現S5PV210 FIMC

驅動 751

第22章  藍牙系統驅動 764

22.1  Android系統中的藍牙模塊 764

22.2  分析藍牙模塊的源碼 766

22.2.1  初始化藍牙芯片 766

22.2.2  藍牙服務 766

22.2.3  管理藍牙電源 767

  

22.3  低功耗藍牙協議棧詳解 767

22.3.1  低功耗藍牙協議棧基礎 767

22.3.2  低功耗藍牙API詳解 768

22.4  Android中的BlueDroid 769

22.4.1  Android系統中BlueDroid的架構 770

22.4.2  Application Framework層分析 770

22.4.3  分析Bluetooth System Service層 778

22.4.4  JNI層詳解 778

22.4.5  HAL硬件抽象層詳解 783

22.5  Android藍牙模塊的運作流程 783

22.5.1  打開藍牙設備 783

22.5.2  搜索藍牙 788

22.5.3  傳輸OPP文件 793

  

  

  

X

  

  

XI

  

  

  

  

  

  

序: