HAL:硬件抽象層函數
HAL ( Hardware Abstraction Layer,硬件抽象腔,是創建在Linux驅動之上的一套翻字庫。這套程序 j率並不屬於 Linux 內核, 而是屬於 Linux 內核層之上的應用層。 在傳統的 Linux.系統中Linux驅動通常有兩種類型的代碼:訪問硬件寄存器的代碼和業務邏輯有 碼。對於訪問硬件寄存器的代碼,並無什麼祕密可言,由於這都是調用的 Linux 內核的標準函數〈如 io位ad32)進行的標準操做 而Linux驅動的業務邏輯部分對擊有些企業或我的並不想將源代碼公開。儘管這些Lipux.驅動都是免費給用戶’使用的,因爲這些Linux 驅動的實現涉及一些 技術專利或商業祕窯,若是公開源代碼會有很大麻煩。但做爲Linux.驅動,又不得不公開源代碼。這是因爲Linux 內核採用了 GPL協議(詳見6J.3.節的介紹),而GPL協議要求全部使用基於GPL協議的源代碼的程序必須開源因爲 Linux 驅動屬於 Linux 內核的一部分,所以Linux 驅動必須開源。 blog
編寫 HAL模塊的步驟和原理以下。 第1步:定義結構體和宏。ip
第 2 步編寫 HAL模塊的open 函數。io
第3 步:定義 hw_module_methods_ t 結構體變量。變量
第4 步: 定義 HAL_MODULE_INFO_SYM 變量。module
第5步:編寫 HAL模塊的 close 函數。原理
第 6步z 編寫控制 LED 的函數。硬件
在安卓系統中使用 Linux驅動有兩種方式,一種是經過傳統的方式直接與Linux驅動交互。例如, 直接讀寫設備文件的數據,另一種是 Android特有的,就是經過 HAL模塊。程序
http://home.cnblogs.com/u/lkm-6398/技術