第一章 Android系統移植與驅動開發 Android源代碼定製完全屬於自己的嵌入式系統,但是支持的設備不多,所以要移植,而在移植的過程中使用的不得不提的是驅動開發。 Android系統構架主要包括四個層次:Linux內核,C/C++代碼庫,Android SDK API,應用程式。在第一層Lin ...
第一章 Android系統移植與驅動開發
Android源代碼定製完全屬於自己的嵌入式系統,但是支持的設備不多,所以要移植,而在移植的過程中使用的不得不提的是驅動開發。
Android系統構架主要包括四個層次:Linux內核,C/C++代碼庫,Android SDK API,應用程式。在第一層Linux中主要包括驅動程式,記憶體管理,進程管理,電源管理等程式,但是不同版本的系統則驅動也不相同,切記不可通用。在第二層C/C++代碼庫中有.so文件和虛擬機的Runtime,第三層的java語言是基於library的,第四層的應用程式相當於UI,依賴於library。Android的每一層都有自己的功能。
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驅動,建議使用Ubuntu Linux10.04以上版本,一塊開發板,學習GUN C,學習相關知識,不斷實踐。
原來在沒有軟體硬體相互的是通過硬體介面進行的,而現在使用驅動將硬體抽象大大方便。Linux將存儲器和外設分為3大類:字元設備,塊設備和網路設備。區別:字元設備是以串列順序訪問,不經過快速緩衝,而塊設備可以隨機訪問,以塊為單位,經過快速緩衝,但對於用戶來說都是使用文件系統通過open(),close(),read(),write()來訪問,而網路設備面向數據的接收和發送。事例:USB,PCI,LCD。
在這裡需要明白的是:在Linux驅動中有一個裝載函數和一個卸載函數。