HAL是創建在Linux驅動上的一套程序庫。這套程序庫並不屬於Linux內核,而是屬於Linux內核層之上的應用層。Google爲Android增長HAL的主要目的除了儘可能避免應用程序直接訪問Linux驅動外,還有一個重要緣由,那就是保護「私人財產」。函數
Google爲Abdroid加入HAL主要有以下目的:spa
統一硬件的調試接口。調試
解決了GPL版權問題。blog
針對一些特殊要求。接口
編寫一款支持HAL的Linux驅動程序的步驟博客
第一步:編寫Linux驅動變量
第二步:編寫HAL Libraymodule
第三步:編寫 Server Libary原理
編寫HAL模塊的步驟和原理硬件
第一步:定義結構體和宏
描述HAL模塊的hw_module_t結構體
描述HAL設備的hw_device_t結構體
描述模塊入口函數的hw_module_methods_t結構體
第二步:編寫HAL模塊的open函數
初始化hw_device_t的子結構體
打開設備文件
初始化寄存器
第三步:定義hw_module_methods_t結構體變量
第四步:定義HAL_MODULE_INFO_SYM變量
第五步:編寫HAL模塊的close函數
第六步:編寫控制LED的函數
心得:在Android系統中使用Linux驅動有兩種方式。一種是經過傳統的方式直接與Linux驅動交互。另一種是Android特有的,就是經過HAL模塊。HAL模塊本質上就是經過Linux共享庫與Linux驅動交互,而後應用程序再訪問Linux共享庫。
本人博客地址:http://home.cnblogs.com/u/jie617530/