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

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

基本介紹

  • 書名:Android板級支持與硬體相關子系統
  • 出版社:電子工業出版社
  • 頁數:407頁
  • 開本:16
  • 品牌:電子工業出版社
  • 作者:韓超 等
  • 出版日期:2013年10月1日
  • 語種:簡體中文
  • ISBN:7121213486
基本介紹,內容簡介,作者簡介,圖書目錄,序言,

基本介紹

內容簡介

本書的目的是要為開發者提供切實有效的幫助。針對開發者的現實情況,本書主要具有以下幾個特點:
用框圖描述每一個硬體相關子系統的結構,並區分BSP部分和公用部分。
選用多個流行的硬體平台,對比其中不同的實現和相同的理念。
對比Android 2.3和Android 4.x的實現,展示硬體相關部分的升級。
對龐大的系統去耦合,展示Android一些原始的核心設計思路。
列出每一個部分相關的代碼路徑。
簡要列出代碼的關鍵部分。
根據實際經驗編寫,工程性強。

作者簡介

韓超,中國大陸地區Linux和移動設備領域的資深工程師、架構師。長期從事一線開發工作,兼具開發實踐經驗和完備的教育思維模式。韓超是中國大陸地區較早開發Android系統的人員,曾從事系統框架、晶片移植適配和移動產品等開發領域;也曾經引領各種技術人員進入Android領域,並組織參與技術交流。曾出版《Android系統原理及開發要點詳解》、《Android系統級深入開發——移植與調試》、《Android經典應用程式開發》、《Android核心原理與系統級套用高效開發》等作品。

圖書目錄

第1章 Android的BSP和子系統開發
1.1 Android板級支持工作概述
1.1.1 Android的開放原始碼工程和BSP
1.1.2 Android的系統結構
1.2 Android的開發環境和原始碼
1.2.1 Android的開發環境
1.2.2 原始碼倉庫
1.3 BSP模組和相關子系統
1.3.1 Android的BSP
1.3.2 BSP和硬體相關子系統
1.3.3 不同類型的Android設備
第2章 Android系統BSP部分工作
2.1 Android的BSP部分工作概述
2.2 BSP的全局部分
2.2.1 原始碼工程板級別支持部分
2.2.2 硬體相關的代碼改動
2.3 Android的Linux作業系統
2.3.1 Android中的Linux作業系統的特定內容
2.3.2 Android的Linux的基本支持
2.3.3 Android各個硬體設備的驅動程式
2.4 Android的硬體抽象層
2.4.1 硬體抽象層的地位和功能
2.4.2 硬體抽象層接口方式
2.5 各個子系統的移植方式
2.5.1 Android 2.3中的實現方式
2.5.2 Android 2.2及之前的實現方式
2.5.3 Android 4.x中的實現方式
2.6 與硬體抽象層相關的框架層目錄
2.6.1 一直保持不變的代碼
2.6.2 框架層的本地代碼
2.6.3 音頻視頻相關的代碼
第3章 Android的Linux核心和驅動
3.1 Android的Linux核心概述
3.1.1 幾個核心工程
3.1.2 核心工程的編譯工具鏈
3.1.3 用戶空間關注的內容
3.2 Android專用驅動和組件
3.2.1 電源管理部分
3.2.2 staging中的組件和驅動程式
3.2.3 幾個主要核心模組
3.2.4 輔助的模組和改動
3.3 goldfish平台的核心和驅動
3.3.1 goldfish平台和核心概述
3.3.2 goldfish體系結構移植
3.3.3 goldfish的相關設備驅動
3.4 高通MSM平台的核心和驅動
3.4.1 平台概述
3.4.2 體系結構移植
3.4.3 設備驅動程式
3.5 三星平台的核心和驅動
3.5.1 平台概述
3.5.2 體系結構移植
3.5.3 驅動程式部分
3.6 德州儀器OMAP平台的核心和驅動
3.6.1 平台概述
3.6.2 體系結構移植
3.6.3 驅動程式部分
第4章 顯示系統
4.1 顯示系統概述
4.2 顯示子系統結構
4.2.1 總體結構
4.2.2 核心結構和UI庫
4.2.3 Surface本地部分
4.2.4 Java層的Surface的處理
4.3 顯示BSP的結構
4.3.1 Framebuffer驅動程式
4.3.2 gralloc硬體抽象層
4.4 顯示BSP的實現
4.4.1 模擬器顯示系統的實現
4.4.2 Nexus One系統的實現
4.4.3 Nexus S系統的實現
4.4.4 Galaxy Nexus系統的實現
第5章 用戶輸入系統
5.1 用戶輸入系統概述
5.2 Android 2.3用戶輸入子系統
5.2.1 總體結構
5.2.2 本地框架的幾個部分
5.2.3 JNI
5.2.4 Java層的部分
5.3 Android 4.2的用戶輸入子系統結構
5.3.1 總體結構
5.3.2 InputManagerService的實現
5.4 用戶輸入BSP的結構
5.4.1 Input驅動程式
5.4.2 輸入配置檔案
5.5 用戶輸入BSP的實現
5.5.1 模擬器中的實現
5.5.2 Nexus One系統中的實現
5.5.3 Nexus S系統中的實現
5.5.4 Galaxy Nexus系統中的實現
第6章 感測器系統
6.1 感測器系統概述
6.2 感測器子系統的結構
6.2.1 總體結構
6.2.2 本地框架層
6.2.3 感測器系統的JNI
6.2.4 感測器系統的Java層
6.3 感測器BSP的結構
6.3.1 驅動程式
6.3.2 硬體抽象層的內容
6.4 感測器BSP的實現
6.4.1 仿真器的實現
6.4.2 Nexus One系統實現
6.4.3 Nexus S系統實現
6.4.4 Galaxy Nexus系統實現
第7章 音頻系統
7.1 音頻系統概述
7.2 音頻子系統結構
7.2.1 總體結構
7.2.2 Audio的本地框架層
7.2.3 Audio系統的JNI和Java層
7.3 音頻BSP的結構
7.3.1 Audio驅動程式
7.3.2 硬體抽象層的內容
7.4 音頻BSP的實現
7.4.1 通用的Audio系統實現
7.4.2 基於OSS的實現方式
7.4.3 基於ALSA的實現方式
7.4.4 MSM平台和Nexus One系統的實現
7.4.5 Nexus S系統的實現
第8章 視頻疊加輸出系統
8.1 視頻疊加輸出系統概述
8.2 視頻輸出子系統的結構
8.2.1 Overlay系統的結構
8.2.2 本地框架層
8.3 視頻疊加輸出BSP結構
8.3.1 移植的內容
8.3.2 驅動程式
8.3.3 硬體抽象層的內容
8.3.4 視頻輸出的調用者
8.3.5 使用Overlay的數據流情況
8.4 視頻輸出BSP的實現
8.4.1 骨架實現
8.4.2 OMAP系統的實現
8.4.3 Nexus S系統的實現
第9章 照相機系統
9.1 照相機系統概述
9.2 照相機子系統的結構
9.2.1 照相機系統的結構
9.2.2 Camera的本地層
9.2.3 Camera的JNI和Java層
9.3 照相機BSP的結構
9.3.1 移植的內容
9.3.2 Video for 4 Linux驅動程式
9.3.3 硬體抽象層的內容
9.3.4 照相機系統上下層的關係
9.4 照相機BSP的實現
9.4.1 樁實現
9.4.2 Nexus One系統的Camera實現
9.4.3 Nexus S系統的Camera實現
第10章 OpenGL 3D引擎
10.1 OpenGL系統概述
10.2 OpenGL系統的結構
10.2.1 OpenGL和OpenGL ES的標準結構
10.2.2 總體結構
10.2.3 OpenGL庫的調用者
10.3 OpenGL BSP的結構
10.3.1 移植的內容
10.3.2 OpenGL移植層的接口
10.3.3 OpenGL的調用和測試
10.4 OpenGL BSP的實現
10.4.1 Android軟體OpenGL的實現
10.4.2 Nexus One系統的實現
10.4.3 Nexus S系統的實現
10.4.4 Galaxy Nexus系統的實現
第11章 OpenMax引擎
11.1 OpenMax系統概述
11.2 OpenMax子系統結構
11.2.1 OpenMax系統的結構
11.2.2 Android中OpenMax的適配層
11.3 OpenMax BSP的結構
11.3.1 OpenMax IL層的接口
11.3.2 Android的OpenMax
11.4 OpenMax BSP的實現
11.4.1 OpenMax IL實現的內容
11.4.2 OMAP3的OpenMax IL實現的結構和機制
11.4.3 OMAP4的OpenMax IL實現
第12章 位塊複製
12.1 位塊複製概述
12.2 位塊複製子系統結構
12.2.1 總體結構
12.2.2 copybit的調用者
12.3 位塊複製BSP的結構
12.3.1 驅動程式
12.3.2 硬體抽象層的接口
12.3.3 實現硬體抽象層
12.4 位塊複製的實現
第13章 無線區域網路系統
13.1 無線區域網路系統概述
13.2 無線區域網路子系統的結構
13.2.1 總體的結構
13.2.2 wpa_supplicant工程
13.2.3 WiFi本地適配庫
13.2.4 WiFi的JNI部分
13.2.5 WiFi的Java層
13.3 無線區域網路BSP的結構
13.3.1 協定和驅動程式
13.3.2 用戶空間的內容
13.4 無線區域網路BSP的實現
13.4.1 基於BCM49的方案(Nexus One和Nexus S)
13.4.2 OMAP平台的一個典型實現
13.4.3 Galaxy Nexus的實現
第14章 藍牙系統
14.1 藍牙系統概述
14.2 藍牙子系統的結構
14.2.1 藍牙系統的結構
14.2.2 BlueZ
14.2.3 bluedroid庫
14.2.4 藍牙的JNI部分
14.2.5 藍牙的Java部分
14.3 BSP的結構
14.3.1 協定和驅動程式
14.3.2 本地代碼的配置部分
14.4 Android 4.2的藍牙系統
14.4.1 系統結構
14.4.2 藍牙硬體模組
14.4.3 藍牙系統的本地層部分
14.4.4 BlueTooth包
14.5 BSP的實現
14.5.1 Nexus One系統的藍牙實現
14.5.2 Nexus S系統的藍牙實現
14.5.3 Galaxy Nexus系統的藍牙實現
第15章 定位系統
15.1 定位系統的概述
15.2 定位子系統的結構
15.2.1 總體結構
15.2.2 JNI部分
15.2.3 Java部分
15.3 定位BSP的結構
15.3.1 驅動程式
15.3.2 硬體抽象層的接口
15.3.3 實現硬體抽象層
15.4 定位BSP的實現
15.4.1 仿真器的GPS實現
15.4.2 Nexus One系統的實現
15.4.3 Nexus S系統的實現
15.4.4 Galaxy Nexus系統的實現
第16章 電話系統
16.1 電話系統概述
16.2 電話子系統的結構
16.2.1 總體結構
16.2.2 rild層
16.2.3 Java層中的電話部分
16.3 電話BSP的結構
16.3.1 驅動程式
16.3.2 RIL實現庫接口(作為硬體抽象層)
16.4 電話BSP部分的實現
16.4.1 RIL的參考實現
16.4.2 數據連線部分
16.4.3 Mock RIL
第17章 警報器—實時時鐘系統
17.1 警報器—實時時鐘系統
17.2 警報器—實時時鐘子系統的結構
17.2.1 總體結構
17.2.2 JNI部分
17.2.3 Java部分
17.2.4 Android系統時間方面的調用
17.3 警報器—實時時鐘BSP部分的結構
17.3.1 RTC驅動程式
17.3.2 Alarm驅動程式
17.4 警報器—實時時鐘BSP部分的實現
17.4.1 模擬器環境中的實現
17.4.2 MSM平台和Nexus One系統的實現
17.4.3 Nexus S系統的實現
17.4.4 Galaxy Nexus系統的實現
第18章 光系統
18.1 光系統概述
18.2 背光和指示燈子系統的結構
18.2.1 總體結構
18.2.2 JNI部分
18.2.3 Java服務部分和調用部分
18.3 背光和指示燈BSP部分的結構
18.3.1 驅動程式
18.3.2 硬體抽象層的內容
18.4 背光和指示燈BSP部分的實現
18.4.1 Nexus One系統的實現
18.4.2 Nexus S系統的實現
18.4.3 Galaxy Nexus 系統的實現
第19章 振動器系統
19.1 振動器系統概述
19.2 振動器子系統的結構
19.2.1 振動器部分的結構
19.2.2 JNI部分
19.2.3 Java框架部分
19.3 振動器BSP部分的結構
19.3.1 驅動程式
19.3.2 硬體抽象層的內容
19.4 振動器BSP部分的實現
19.4.1 Nexus One系統的實現
19.4.2 Nexus S系統的實現
19.4.3 Galaxy Nexus
第20章 電池信息部分
20.1 電池信息部分
20.2 電池信息子系統的結構
20.2.1 電池系統部分的結構
20.2.2 JNI部分
20.2.3 Java部分
20.3 電池信息BSP部分的結構
20.4 電池信息BSP部分的實現
20.4.1 模擬器中的實現
20.4.2 Nexus One
20.4.3 Nexus S
20.4.4 Galaxy Nexus
第21章 Android 4.x的音頻、視頻系統
21.1 Android 4.x的音頻系統
21.1.1 音頻系統的結構
21.1.2 音頻框架層
21.1.3 音頻BSP部分結構
21.2 Android 4.x音頻的BSP實現
21.2.1 主實現和策略實現
21.2.2 仿真器實現
21.2.3 A2DP實現
21.2.4 Galaxy Nexus的實現
21.3 Android 4.x照相機系統
21.3.1 照相機系統的結構
21.3.2 Camera的框架層
21.3.3 照相機BSP部分結構
21.4 Android 4.x照相機的BSP實現
21.4.1 仿真器實現
21.4.2 Galaxy Nexus的實現
21.5 Android 4.x視頻組合系統
21.5.1 視頻組合系統結構
21.5.2 SurfaceFlinger對視頻組合的使用
21.5.3 視頻組合BSP部分結構
21.6 Android 4.x視頻組合的BSP實現
21.6.1 默認實現
21.6.2 Galaxy Nexus的視頻組合
第22章 Android 4.x近場通信系統
22.1 近場通信系統概述
22.2 近場通信子系統的結構
22.2.1 總體結構
22.2.2 NFC本地庫
22.2.3 Android框架層的NFC相關內容
22.2.4 NFC包
22.3 近場通信BSP的結構
22.3.1 NFC—NCI接口
22.3.2 NFC接口
22.4 近場通信BSP的實現
22.4.1 NCI—NFC的樁實現
22.4.2 NFC的樁實現
22.4.3 Galaxy Nexus 的NFC實現
第23章 Android 4.2的電源控制
23.1 電源控制
23.2 電源控制的結構
23.2.1 總體結構
23.2.2 電源控制的使用
23.3 電源控制BSP的結構
23.4 電源控制BSP的實現
23.4.1 通用的電源控制實現
23.4.2 Galaxy Nexus的電源控制實現
第24章 本地時間
24.1 本地時間子系統結構
24.1.1 本地時間的結構
24.1.2 本地時間的使用
24.2 本地時間BSP的結構
24.3 本地時間BSP的實現
第25章 Android 4.2密鑰
25.1 密鑰概述
25.2 安全和密鑰子系統結構
25.2.1 安全和密鑰的總體結構
25.2.2 keystore守護進程
25.2.3 android.security的內容
25.3 密鑰的BSP部分的結構
25.4 密鑰的BSP實現
25.4.1 通用的軟體密鑰實現
25.4.2 Galaxy Nexus 的密鑰實現
第26章 電源管理
26.1 Android電源管理
26.2 Android核心空間的電源管理
26.2.1 總體結構
26.2.2 wakelock
26.2.3 wakelock的用戶空間
26.2.4 earlysuspend部分
26.2.5 其他
26.3 Android用戶空間的電源管理
26.3.1 電源管理的本地庫
26.3.2 電源管理的JNI庫
26.3.3 電源管理的Java部分
26.4 電源管理的策略
26.4.1 驅動程式的變化
26.4.2 用戶空間的控制
第27章 恢復和升級
27.1 恢復和升級概述
27.1.1 Android的Recovery系統的組成
27.1.2 Android的Recovery系統的功能和運行流程
27.2 recovery系統
27.2.1 編譯系統
27.2.2 init.rc腳本
27.2.3 Recovery可執行程式和相關的庫
27.3 Android系統互動的過程
27.3.1 Java部分
27.3.2 互動的場景

序言

開發者的需要
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領域具有豐富的一線開發經驗。本書內容來源於工作在不同領域的開發者多年的經驗。韓超完成了本書內容的主要部分,眾多不同規模的企業開發成果也為本書的編寫提供了重要的素材。參與本書編寫的還有崔海斌、於仕林、張宇、張超、趙家維、黃亮、沈楨、徐威特、楊鈺、馬若劼、曹道剛、梁泉等。

相關詞條

熱門詞條

聯絡我們