標籤:
第一章 Android系統移植與驅動開發
Android原始碼定製完全屬於自己的嵌入式系統,但是支援的裝置不多,所以要移植,而在移植的過程中使用的不得不提的是驅動開發。
Android系統構架主要包括四個層次:Linux核心,C/C++程式碼程式庫,Android SDK API,應用程式。在第一層Linux中主要包括驅動程式,記憶體管理,進程管理,電源管理等程式,但是不同版本的系統則驅動也不相同,切記不可通用。在第二層C/C++程式碼程式庫中有.so檔案和虛擬機器的Runtime,第三層的java語言是基於library的,第四層的應用程式相當於UI,依賴於library。
Android系統移植分為應用移植和系統移植,但應用移植一般情況下不使用。所以說Android系統移植是指讓作業系統在一個特定硬體平台運行:cpu架構和識別硬體裝置,有驅動在核心中完成的,案例:wifi。還增加了HAL,它位於第二層中,Android不存在直接存取驅動,而是通過HAL。系統移植的根本是原始碼,主要工作就是:移植Linux驅動,移植HAL。HAL是Android系統特有的。
Linux核心版本的查看方法有兩種:1.終端下命令:uname –a;2.cat /proc/version.
Linux核心版本號碼組成部分:主要版本號,次版本號碼,修訂版本號碼,微調版本號碼,特別校正的描述,例如:2.6.29.7-flykernel-12a。
如何學習Linux驅動開發:準備一個自己熟悉的Linux作業系統,用於開發與測試Linux驅動,建議使用Ubuntu Linux10.04以上版本,一塊開發板,學習GUN C,學習相關知識,不斷實踐。
原來在沒有軟體硬體相互的是通過硬體介面進行的,而現在使用驅動將硬體抽象大大方便。Linux將儲存空間和外設分為3大類:字元裝置,塊裝置和網路裝置。區別:字元裝置是以串列順序訪問,不經過快速緩衝,而塊裝置可以隨機訪問,以塊為單位,經過快速緩衝,但對於使用者來說都是使用檔案系統通過open(),close(),read(),write()來訪問,而網路裝置面向資料的接收和發送。案例:USB,PCI,LCD。
在這裡需要明白的是:在Linux驅動中有一個裝載函數和一個卸載函數。
Android系統移植與驅動開發----第一章