21世紀,Android發展非常迅速,在市場上佔有很大的比例,遙遙領先與iOS,很大程度上是因為任何人都可以利用Android的原始碼定製完全屬於自己的嵌入式開發系統,而不需要向Google交一分錢。
隨著通訊 、電子行業的迅速發展,全世界每天都會有大量的新晶片被產生,大量的新電路板被設計,因此,也會有大量的裝置驅動需要開發,這些裝置驅動,或執行在簡單的單任務環境中,或執行在VxWorks、Linux、Windows等多工操作環境中,發揮著不可替代的作用。
針對特定硬體平臺從零構建Android系統,包括平臺移植、應用開發、核心開發以及驅動開發。目前企業對Android人才需求主要分佈在應用開發和底層系統開發兩個方面,當今企業最緊缺的是兼具二者的全才型系統工程師,和嵌入式Linux人才需求基本相似。驅動程式溝通著硬體和應用軟體,而驅動工程師則溝通著硬體工程師和應用軟體工程師。
Android是基於Linux核心的。由於Android原生的程式碼支援的裝置並不多,因此我們想要在自己的裝置上完美執行Android,就需要另外開發一些程式,使得Android可以識別相應裝置中的各種硬體,這個過程被稱為“移植”。任何的Linux驅動都有一個載入函式和一個解除安裝函式,它們分別通過module_init和module_exit巨集指定。
我們要知道Android是一個非常優秀的嵌入式作業系統。它有自己完善的系統架構,分為4層:第1層,Linux核心,Android使用Linux2.6核心;第2層,C/C++程式碼庫,主要包括Linux的.so檔案以及嵌入到APK程式中的NDK程式碼;第3層,由於Android SDK API是用Java語言編寫的,因此,這一層又可以叫做Java API層。這一層就是用Java編寫的各種Library;第4層,應用程式,相當於Android的UI。這一層是所有Android使用者需要接觸的。
然而,要使一個作業系統在特定硬體平臺上執行的一個首要條件就是該作業系統支援硬體平臺的CPU架構。當然,這還是不夠的,還需要移植Linux驅動,這些工作主要是由Linux核心完成的,主角是Linux驅動。除此之外,在Android系統中還增加了一個Hardware Abstraction Layer,HAL ,硬體抽象層,不過HAL不是必需的。
作業系統是通過各種驅動程式來駕馭硬體裝置的,它為使用者遮蔽了各種各樣的裝置,驅動硬體是作業系統最基本的功能,並且提供統一的操作方式。裝置驅動程式是作業系統最基本的組成部分之一,在Linux核心源程式中也佔有60%以上。因此,熟悉驅動程式的編寫很重要。
Android中核心的結構和標準的Linux2.6核心是基本相同的,Android在其基礎上增加了私有內容。Android在Linux核心中增加的主要是一些驅動程式,這些驅動程式主要分為兩種:Android專用驅動和Android使用的裝置驅動。通過本章學習,初步瞭解了驅動程式的概念和Android驅動的開發原理。