人民幣定價:59 元
定價
:NT$ 354 元優惠價
:
87 折 308 元
絕版無法訂購
商品簡介
作者簡介
名人/編輯推薦
序
目次
書摘/試閱
商品簡介
本書以硬體相關的子系統為核心,提供具有完整知識體系Android系統級的開發知識。本書選定了幾個流行的硬體作為參考平臺,讀者可以很容易地得到硬體和開原始程式碼。本書突出了硬體相關的子系統的特點,展示了幾個不同的硬體平臺的內核結構,介紹了每個子系統的總體結構和BSP結構、每個子系統的BSP的實現要點,以及具體硬體在Linux內核與Android硬體抽象層相關的實現。
本書適用於各類Android技術群體,也適用於嵌入式Linux的技術人員瞭解實際系統。作者根據豐富的開發經驗和對Android系統發展5年的總結完成本書,希望為Android系統的開發者和學習者提供切實有效的幫助。
本書適用於各類Android技術群體,也適用於嵌入式Linux的技術人員瞭解實際系統。作者根據豐富的開發經驗和對Android系統發展5年的總結完成本書,希望為Android系統的開發者和學習者提供切實有效的幫助。
作者簡介
韓超,中國大陸地區Linux和移動設備領域的資深工程師、架構師。長期從事一線開發工作,兼具開發實踐經驗和完備的教育思維模式。韓超是中國大陸地區較早開發Android系統的人員,曾從事系統框架、芯片移植適配和移動產品等開發領域;也曾經引領各種技術人員進入Android領域,并組織參與技術交流。曾出版《Android系統原理及開發要點詳解》、《Android系統級深入開發——移植與調試》、《Android經典應用程序開發》、《Android核心原理與系統級應用高效開發》等作品。
名人/編輯推薦
編輯推薦
本書的目的是要為開發者提供切實有效的幫助。針對開發者的現實情況,本書主要具有以下幾個特點:
用框圖描述每一個硬體相關子系統的結構,並區分BSP部分和公用部分。
選用多個流行的硬體平臺,對比其中不同的實現和相同的理念。
對比Android 2.3和Android 4.x的實現,展示硬體相關部分的升級。
對龐大的系統去耦合,展示Android一些原始的核心設計思路。
列出每一個部分相關的代碼路徑。
簡要列出代碼的關鍵部分。
根據實際經驗編寫,工程性強。
本書的目的是要為開發者提供切實有效的幫助。針對開發者的現實情況,本書主要具有以下幾個特點:
用框圖描述每一個硬體相關子系統的結構,並區分BSP部分和公用部分。
選用多個流行的硬體平臺,對比其中不同的實現和相同的理念。
對比Android 2.3和Android 4.x的實現,展示硬體相關部分的升級。
對龐大的系統去耦合,展示Android一些原始的核心設計思路。
列出每一個部分相關的代碼路徑。
簡要列出代碼的關鍵部分。
根據實際經驗編寫,工程性強。
序
開發者的需要
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系統已經推出了將近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領域具有豐富的一線開發經驗。本書內容來源于工作在不同領域的開發者多年的經驗。韓超完成了本書內容的主要部分,眾多不同規模的企業開發成果也為本書的編寫提供了重要的素材。參與本書編寫的還有崔海斌、于仕林、張宇、張超、趙家維、黃亮、沈楨、徐威特、楊鈺、馬若劼、曹道剛、梁泉等。
目次
第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 基於BCM4329的方案(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 交互的場景
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 基於BCM4329的方案(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 SupportPackage,板級支援包)部分都是由晶片的廠商統一完成的,並且已經趨近於成熟。因此,開發者的主要工作不再是構建完整的BSP,而是調試和修改現有的BSP。
本書特色
本書的目的是要為開發者提供切實有效的幫助。針對開發者的現實情況,本書主要具有以下幾個特點:
用框圖描述每一個硬體相關子系統的結構,並區分BSP部分和公用部分。
選用多個流行的硬體平臺,對比其中不同的實現和相同的理念。
對比Android 2.3和Android 4.x的實現,展示硬體相關部分的升級。
對龐大的系統去耦合,展示Android一些原始的核心設計思路。
列出每一個部分相關的代碼路徑。
簡要列出代碼的關鍵部分。
根據實際經驗編寫,工程性強。
通過對每一個子系統的學習,讀者可以瞭解現有Android系統的結構,經過深入理解後,可以明白Android系統的設計思路。學習後,如果要在系統中增加一個新的非標準硬體,讀者也能比較容易地完成。
本書特別選定了Nexus One、Nexus S、GalaxyNexus等幾款手機作為參考平臺。其中一個很大的優點就是以上幾個平臺都是Google認定的,具有典型性,並且它們從內核到Android系統的代碼都是開源的,讀者可以很容易獲得。雖然以上幾個硬體平臺不是最新的,但是根據嵌入式SOC的特點,高通的處理器都與NexusOne的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系統已經推出了將近5個年頭了,從1.0版本一直到本書寫作時的4.2版本。作為其載體的硬體也經過了多次升級。到今天,Android設備已經成為硬體的集大成者。硬體方面的開發一直是開發的難點,凡是一個完整Android設備的開發者,無論處於產業鏈的哪一個階段,都不可避免地要處理與硬體相關的問題。
Android的開發者通常面對幾個方面的難點:
Android系統的代碼龐大,難以把握硬體相關的調試思路。
不清楚軟體和硬體之間的直接關係。
對某個硬體平臺的知識和經驗不適用於其他硬體平臺。
Android系統的版本升級過程中,與硬體相關的部分常常發生重大變動。
另外一個客觀的情況是,目前一般處理器或者基本硬體平臺的BSP(Board SupportPackage,板級支援包)部分都是由晶片的廠商統一完成的,並且已經趨近於成熟。因此,開發者的主要工作不再是構建完整的BSP,而是調試和修改現有的BSP。
本書特色
本書的目的是要為開發者提供切實有效的幫助。針對開發者的現實情況,本書主要具有以下幾個特點:
用框圖描述每一個硬體相關子系統的結構,並區分BSP部分和公用部分。
選用多個流行的硬體平臺,對比其中不同的實現和相同的理念。
對比Android 2.3和Android 4.x的實現,展示硬體相關部分的升級。
對龐大的系統去耦合,展示Android一些原始的核心設計思路。
列出每一個部分相關的代碼路徑。
簡要列出代碼的關鍵部分。
根據實際經驗編寫,工程性強。
通過對每一個子系統的學習,讀者可以瞭解現有Android系統的結構,經過深入理解後,可以明白Android系統的設計思路。學習後,如果要在系統中增加一個新的非標準硬體,讀者也能比較容易地完成。
本書特別選定了Nexus One、Nexus S、GalaxyNexus等幾款手機作為參考平臺。其中一個很大的優點就是以上幾個平臺都是Google認定的,具有典型性,並且它們從內核到Android系統的代碼都是開源的,讀者可以很容易獲得。雖然以上幾個硬體平臺不是最新的,但是根據嵌入式SOC的特點,高通的處理器都與NexusOne的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領域具有豐富的一線開發經驗。本書內容來源於工作在不同領域的開發者多年的經驗。韓超完成了本書內容的主要部分,眾多不同規模的企業開發成果也為本書的編寫提供了重要的素材。參與本書編寫的還有崔海斌、于仕林、張宇、張超、趙家維、黃亮、沈楨、徐威特、楊鈺、馬若劼、曹道剛、梁泉等。
主題書展
更多
主題書展
更多書展購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

