2010/06/01

介紹android工具書 (BSP / Application, framework, hal)

2014/04/20更新:
由於工作需要android4.x的BSP Porting
所以我今天去書店看看, 並且很幸運地看到韓超最新出版的新書(2014/04出版)
這個月才出版的…好新!

自從看過他上次的書之後, 就覺得他寫的書很精準,不多說廢話…
很適合給作BSP的工程師.

Android BSP與系統移植開發
作者: 韓超 等著


作者簡介 
韓超
中國大陸地區Linux和行動裝置領域的資深工程師、架構師。長期從事一線開發工作,兼具開發實戰經驗和完備的教育思維模式。韓超是中國大陸地區較早開發Android系統的人員,曾從事系統框架、蕊片移植適配和行動產品等開發領域;也曾經引領各種技術人員進入Android領域,並組織參與技術交流。


第1章 Android的BSP和子系統開發
說明Android系統,如何基於Android的開放原始碼,加入針對特定硬體的BSP部分,由此來建構各種系統,並可以運行在任何支援的硬體平台上。

第2章 Android系統BSP移植工作
說明Android BSP移植工作的目的,包含如何讓Android系統能啟動基本Linux系統(CPU、內部記憶體、定時器)及序列埠、RAM等基本裝置。

第3章 Android的Linux核心和驅動程式
Android系統的Linux核心與硬體平台相關,每個硬體平台具有各自獨立的程式碼儲存庫。每個程式碼儲存庫的Linux核心主要不同的地方是目標板移植和驅動程式部分,並且會隨著Linux核心的版本升級。本章將以Goldfish平台、高通MSM平台、三星平台、德州儀器OMAP平台為例做核心和驅動程式的介紹。

第4章 顯示系統
顯示系統是系統與使用者交互介面部分最基本的功能,其功能是將矩陣形式圖形資料顯示到使用者可見螢幕上。本章將協助使用者熟悉Android的顯示子系統結構、顯示BSP的結構,以及顯示BSP的實作。

第5章 使用者輸入系統
Android的使用者輸入系統的職責是取得使用者行為,主要功能是取得使用者使用輸入裝置進行操作的資訊,並將其交由系統的相關部分進行處理。本章將協助使用者熟悉輸入系統BSP的結構和實作。

第6章 傳感器系統
Android的傳感器系統是系統取得資訊的手段,從各種不同類型的傳感器硬體中取得,並交由Android系統的相關部分進行處理。本章將協助使用者熟悉傳感器子系統的結構以及傳感器BSP的結構和實作。

第7章 聲音系統
Android的聲音系統提供聲音系統對聲音硬體的裝置進行操作,其主要功能是聲音資料的輸入/輸出和控制功能。本章將協助使用者熟悉聲音子系統的結構以及聲音BSP的結構和實作。

第8章 影像疊加輸出系統
Android的影像疊加輸出系統提供影像畫面資料的輸出功能,並利用特殊的影像輸出裝置將影像資料數據單獨進行輸出。本章將協助使用者熟悉影像輸出子系統的結構以及影像疊加輸出BSP結構和實作。

第9章 相機系統
Android的相機系統提供照相機相關的功能。相機系統的硬體裝置就是鏡頭硬體,為系統提供影片畫面的輸入和拍攝照片的功能。本章將協助使用者相機子系統的結構以及相機BSP結構和實作。

第10章 OpenGL 3D引擎
OpenGL(Open Graphics Library)是一個標準化的圖形渲染(Render)引擎,在Android中使用標準的OpenGL介面作為3D部分的介面。本章將會介紹OpenGL系統的結構以及OpenGL BSP的結構和在各硬體平台上的實作。

第11章 OpenMax引擎
OpenMax是一個多媒體應用程式的框架標準。其中,OpenMax IL(集成層)技術規格定義了媒體元件介面,以便在嵌入式元件的串流媒體框架中快速集成加速編解碼器。本章將會針對OpenMax引擎的子系統結構,以及OpenMax BSP的結構和實作做介紹。

第12章 位元複製
本章主要介紹位元複製。位元複製(copybit)是Android中一個提供了可以加速記憶體圖形處理的加速模組。主要包括區塊複製和圖像拉伸兩部分功能。根據其參數的不同,也可以實作旋轉、透明度混疊、顏色格式轉換等方面的功能。

第13章 無線網路系統
WiFi(Wireless Fidelity)使用了IEEE的802.11協定的技術,目前在智慧手機中使用WiFi已經成為智慧手機的核心功能之一。本章將會針對無線網路系統的子系統結構,以及BSP結構和實作提出說明。

第14章 藍牙系統
在Android中,藍牙系統的底層硬體是藍牙硬體,通常可以使用UART、SDIO或USB介面作為連接。本章將會針對藍牙子系統的結構,以及BSP的結構和實作提出說明。

第15章 定位系統
Android的定位系統具有完整架構,並採用不同的手段來定位。GPS(基於全球定位系統)屬於衛星導航系統,需要特定的硬體接收來自衛星的資料,Android的定位系統主要使用GPS裝置。AGPS的含義為Assisted GPS(輔助GPS),可以透過行動電話、IP網路等手段實現定位。本章將會針對定位子系統的結構,以及BSP的結構和實作提出說明。

第16章 電話系統
Android系統主要是作為智慧型手機的作業系統來使用,因此電話部分是Android的核心子系統之一。Android的電話系統圍繞底層使用的Modem硬體來搭建。Android主要提供呼叫(Calling)、簡訊(SMS)等業務,此外透過電話系統還可以實現資料連接(Data Connection),實現網路功能。本章將會針對電話子系統的結構,以及BSP的結構和實作提出說明。

第17章 警報器 — 即時時鐘系統
Android的警報器(Alarm)系統提供了警報和時間設定方面的支援,其實作的硬體基礎通常是即時時鐘(RTC)。在Linux核心程式碼中,需要有即時時鐘裝置驅動程式和Android的Alarm驅動程式。本章將會針對警報器 — 即時時鐘子系統的結構,以及BSP部分的結構和部分的實作提出說明。

第18章 光系統
背光和指示燈系統部分在Android中歸為光系統統一實作。 Android的光系統負責控制系統中的各個光源,例如螢幕背光、鍵盤按鍵光、電池光等。光系統基本上是一個用於輸出控制的系統。本章將會針對背光和指示燈子系統的結構,以及BSP部分的結構和部分的實作提出說明。

第19章 震動器系統
震動器負責控制電話來電時的振動功能,Android中的震動器系統是一個專提供這方面功能的小系統,提供根據時間振動的功能。本章將會針對震動器子系統的結構,以及振動器BSP部分的結構和部分的實作提出說明。

第20章 電池訊息部分
Android系統考慮了多種供電方式,包括AC、USB、Battery等。在應用程式層次,通常包括了電池狀態顯示的功能。因此,從Android系統的軟體方面(包括驅動程式和使用者空間內容),需要在一定程度上獲得電池的狀態。在Android系統中,電池系統主要負責電池訊息統計方面的功能。本章將會針對電池訊息子系統的結構,以及電池訊息的BSP部分的結構和部分的實作提出說明。

第21章 Android 4.x的聲音、影像系統
Android 4.x的聲音系統、相機系統在硬體抽象層之下皆產生了一些變化,由原本固定鏈接的動態函式庫,變成了Android中固定的硬體模組,本章將會針對Android 4.x的聲音系統、相機系統、影像組合的結構以及這些系統的BSP實作提出說明。

第22章 Android 4.x近距離通訊系統(NFC)
近距離通訊(NFC,Near Field Communication)也稱為近距離無線通訊,是一種短距離的高頻無線通訊技術,允許電子裝置之間進行非接觸式點對點資料傳輸,在10cm內交換資料。而這也是目前蠻夯的議題之一,可惜目前市面上的Android書籍中鮮少對這個部份有所說明,希望這章所提供的內容,能幫助讀者更進一步的了解NFC。

第23章 Android 4.2的電源控制
電源控制是Android 4.2增加的一個輔助功能的模組,可以對電源控制進行一部分干涉和控制。本章將會針對電源控制的結構以及電源控制BSP的結構和實作提出說明。

第24章 系統時間
系統時間是Android 4.2新增的一個輔助功能的硬體抽象層模組,用於得到系統的時間和頻率。本章將會針對系統時間的結構以及系統時間的BSP的結構和實作提出說明。

第25章 Android 4.2金鑰
金鑰是Android 4.2新增的一個硬體抽象層模組,用於支援Android安全系統的運行。金鑰部分本身包括了產生金鑰對(公鑰和私鑰)、使用金鑰簽名資料、使用金鑰驗證資料等功能。本章將會針對安全和金鑰子系統的結構以及金鑰的BSP部分的結構和實作提出說明。

第26章 電源管理
Android的電源管理結合了Linux核心和使用者空間控制。主要包括了核心中的核心機制和使用者空間規則方面的控制。本章將會幫助讀者了解Android在核心空間以及使用者空間的電源管理以及電源管理的相關規則。

第27章 還原和升級
還原(Recovery)和升級(Update)是系統改變自身軟體的手段:還原通常是指將系統的軟體還原到某個出廠的版本;升級是指將系統的軟體改變成某個比較新的版本,其中可能包括增量的升級。Android系統的還原和升級在軟體上使用了相似的結構和流程,並且在實作上統稱為Recovery。而這將會是本章介紹的重點。


2011更新推薦Android BSP的書:

深入淺出Android系統移植與開發測試 韓超/ 梁泉
這本書有別於市面上(包含下方兩本)以Application為主的Android書籍, 而是真正在乎BSP的HAL層移植的書

介紹兩本關於android的書本, 其實也是因為我這邊有這兩本書

可以提供預選購的人參考, 推薦你看一下!

第一本書: Google Android SDK開發範例大全2

裡面提及的程式開發內容皆是JAVA語言, 與安裝環境eclipse設置
豐富的開發範例, 可以提供你許多既有的JAVA程式碼, 讓你可以快速修改

Chapter 1 如何使用本書
Chapter 2 Android初體驗
Chapter 3 使用者人機介面
Chapter 4 史上超豪華的手機控制項
Chapter 5 互動式通訊服務與手機控制
Chapter 6 手機自動服務記實
Chapter 7 娛樂多媒體
Chapter 8 當Android與Internet接軌
Chapter 9 Google服務與Android混搭
Chapter 10 非廣告~創意Android程式設計

這個部落格將書裡絕大部分的範例展示出來(但無程式碼):
http://androidsdk.pixnet.net/blog

第二本書: 行動裝置 嵌入式系統與軟體

誠如書名所述, 這本書將重點放在嵌入式的設計
因此會提到許多與底層相關的內容, 且由於android底層是由C語言所開發, 應用層由JAVA語言開發
此本書也以C與JAVA為主, 討論Android架構與上下層如何配合

第一章 Ubuntu Linux基本操作
1-1 開發環境
1-1.1 交叉開發模式
1-1.2 硬體要求
1-2 什麽是Ubuntu
1-3 安裝Ubuntu Linux
1-3.1 準備工作
1-3.2 安裝Ubuntu基本系統
1-3.3 更新Ubuntu系統
1-4 軟體套件管理
1-5 安裝開發常用工具及相關套件
1-6 交叉編譯器的安裝
1-7 在Ubuntu架設伺服器
1-7.1 建立TFTP伺服器
1-7.2 建立NFS伺服器
1-7.3 利用Samba與Windows共享檔案
1-7.4 安裝SSH伺服器
1-8 系統基本管理
1-8.1 如何啟用root帳號
1-8.2 如何增加硬碟到ubuntu系統
1-9 參考資料

第二章 Linux程式設計基礎
2-1 交叉編譯工程選項說明
2-2 Makefile檔案介紹
2-2.1 Makefile基本架構
2-2.2 Makefile規則
2-2.3 Makefile變數使用方法
2-2.4 Make命令的使用

第三章 U-Boot移植
3-1 BootLoader的介紹
3-2 U-Boot的介紹
3-2.1 U-Boot工程簡介
3-2.2 U-Boot的啟動方式
3-2.3 U-Boot的特性及其主要功能
3-2.4 U-Boot源始碼結構
3-3 U-Boot的分析和移植
3-3.1 U-Boot的配置及編譯過程
3-3.2 U-Boot的啟動過程及幾個重要檔案分析
3-3.3 U-Boot的移植
3-4 添加U-Boot命令
3-4.1 添加U-Boot命令函數介紹
3-4.2 添加U-Boot擴充命令
3-5 U-Boot常用命令介紹
3-6 U-Boot的環境變數
3-7 本章小結

第四章 Android核心移植
4-1 Android結構簡介
4-2 Android核心移植準備
4-2.1 Android核心源碼結構
4-2.2 分析Android核心中的Makefile檔
4-2.3 Android核心中的Kconfig分析
4-2.4 Android核心配置選項
4-3 Android核心移植
4-3.1 修改Linux核心以支援DMA-6410XP教學平台
4-3.2 Android系統LCD移植
4-3.3 Android系統觸控式螢幕除錯
4-3.4 Android系統鍵盤驅動除錯
4-4 Android核心除錯方法
4-4.1 Linux核心除錯概述
4-4.2 Linux核心除錯方法

第五章 Linux 2.6.27驅動程式基礎
5-1 裝置驅動程式概論
5-1.1 驅動程式的概念
5-1.2 驅動程式的模型
5-1.3 Linux驅動的類別
5-2 模組的編譯與裝載
5-2.1 核心模組和應用程式的區別
5-2.2 動態載入驅動程式
5-3 驅動開發關鍵技術
5-3.1 同步機制
5-3.2 記憶體分配與映像
5-3.3 阻塞與非阻塞
5-3.4 中斷處理
5-3.5 DMA
5-3.6 Platform概念
5-4 本章小結

第六章 驅動程式分析與除錯
6-1 開啟QT檔案系統
6-1.1 透過tftp協定燒寫核心映像檔zImage
6-1.2 透過tftp協定燒寫Cramfs檔案系統
6-2 LED驅動實驗
6-3 背光調節驅動實驗
6-4 矩陣鍵盤驅動實驗
6-5 直流馬達驅動實驗
6-6 步進馬達驅動實驗
6-7 串列埠通訊實驗
6-8 ADC測試實驗

第七章 Android體系結構
7-1 Android體系結構介紹
7-1.1 應用程式(Application)
7-1.2 應用程式框架(Application Framework)
7-1.3 Android函式庫
7-1.4 Linux核心
7-2 Android應用程式組成
7-2.1 Activity介紹
7-2.2 Broadcast intent Receiver介紹
7-2.3 Service介紹
7-2.4 Content Provider介紹
7-3 Android應用工程檔案組成
7-4 本章小結

第八章 Android開發環境搭建
8-1 建立Android開發環境
8-1.1 安裝Android系統開發套件
8-1.2 建立Android應用程式開發環境
8-2 應用開發環境測試
8-3 Android原始程式碼下載及相關環境設置
8-4 Android檔案系統編譯
8-5 Android檔案系統燒寫到DMA-6410XP
8-5.1 燒寫核心
8-5.2 燒寫ramdisk映像檔
8-5.3 燒寫Android system.img檔案
8-5.4 燒寫Android userdata.img檔案
8-6 引導核心和開機檔案系統
8-7 Android原始程式碼針對DMA-6410XP的修改
8-7.1 電池電量檢測修改
8-7.2 自動掛載SD卡設定及修改
8-7.3 無線網路卡
8-7.4 DM9000網路

第九章 Android基本組件介紹
9-1 組件介紹前序
9-1.1 視圖組件(View)
9-1.2 佈局組件(Layout)
9-1.3 佈局參數(LayoutParams)
9-2 常用widget組件介紹
9-2.1 為widget元件創建Android專案
9-2.2 按鈕元件(Button)
9-2.3 文字方塊(TextView)
9-2.4 編輯方塊(EditText)
9-2.5 多項選擇(CheckBox)
9-2.6 單項選擇(RadioGroup)
9-2.7 下拉清單(Spinner)
9-2.8 自動完成文本(AutoCompleteTextView)
9-2.9 日期、時間選擇器(Date、TimePicker)
9-2.10 進度條(ProgressBar)
9-2.11 拖動條(SeekBar)
9-2.12 圖片視圖(ImageView)
9-2.13 基於網格索引(GridView)的圖片瀏覽器
9-2.14 標簽(Tab)
9-3 Intent和Activity跳轉
9-3.1 Activity跳轉
9-3.2 Intent消息傳遞
9-4 menu設計修改
9-5 對話方塊(Dialog)實例
9-6 Toast和Notification應用
9-7 本章小結

第十章 Android應用程式設計實例
10-1 LED控制
10-2 ADC控制
10-3 BackLight背光控制
10-4 DC Motor控制
10-5 Step Motor控制
10-6 KEYPAD實驗

附錄一 DMA-6410XP教學平台簡介
附錄二 Android與Neo FreeRunner
附錄三 TS觸控校準使用步驟

沒有留言:

張貼留言