本章主要講硬體抽象層:hal硬體抽象層是建立在linux驅動之上的一套程式庫。這套程式庫並不屬於linux核心,而是屬於linux核心層上的應用層。
google為android加入hal主要有以下目的:統一硬體的呼叫介面。由於hal有標準的呼叫介面,所以可以利用hal遮蔽了linux驅動複雜、不統一的介面;解決了gpl協議;針對一些特殊的要求。對於一些硬體,可能需要訪問一些使用者空間的資源,或在核心空間不方便完成的工作以及特殊需求。在這種情況下,可以利用位於空間的hal**來輔助linux完成一些工作。
下乙個小節講了android hal的架構。接下來講了為led驅動增加hal,主要是將所有的業務邏輯從led驅動移到hal模組,而led驅動只保留讀寫暫存器的功能。
涉及的hal步驟:1.編寫linux驅動2.編寫hal library 3.編寫service library?精簡led驅動
編寫hal模組的步驟和原理如下。
第一步:定義結構體和巨集;編寫hal模組需要使用到3個非常重要的結構體,在第一步需要定義兩個新的結構體。
第二步:編寫hal模組的open函式:open函式是hal模組的入口點。本例中使用的是led_device_open函式。該函式主要做如下三個工作:初始化hw_device_t的子結構體,開啟裝置檔案,初始化暫存器。
第三步:定義hw_module_methhods_t結構體變數
第四步:定義hal_module_info_sym函式
第五步:編寫hal模組的close函式:當hal模組被解除安裝後會呼叫close函式
第六步:編寫控制led的函式
Android 硬體抽象層(HAL)
出發點 保護廠商利益 android的硬體抽象層,簡單來說,就是 對linux核心驅動程式的封裝,向上提供介面,遮蔽低層的實現細節。也就是說,把對硬體的支援分成了兩層,一層放在使用者空間 user space 一層放在核心空間 kernel space 其中,硬體抽象層執行在使用者空間,而linux...
什麼是HAL 硬體抽象層
hal hardware abstraction layer 硬體抽象層 這個是李先靜的blog的解釋,真是天下何處不逢君啊 hal是hardware abstraction layer的首字母縮寫。我最早是在winnt 3.5的幫助中知道這個名詞的,對幫助文件中的說法我比較認同,所以一直對它抱有好...
第9章 硬體抽象層 HAL
撇開這些爭論,學習android硬體抽象層,對理解整個android整個系統,都是極其有用的,因為它從下到上涉及到了android系統的硬體驅動層 硬體抽象層 執行時庫和應用程式框架層等等,下面這個圖闡述了硬體抽象層在android系統中的位置,以及它和其它層的關係 android加入hal主要有如...