Android深度探索(卷1)HAL與驅動開發 心得體會 第九章 硬件抽象層:HAL

Android深度探索(卷1)HAL與驅動開發 心得體會android

第九章 硬件抽象層:HAL函數

Android HAL層,即硬件抽象層,是Google響應廠家「但願不公開源碼」的要求推出的新概念
1,源代碼和目標位置
源代碼: /hardware/libhardware目錄,該目錄的目錄結構以下:
/hardware/libhardware/hardware.c編譯成libhardware.so,目標位置爲/system/lib目錄
2,HAL層的實現方式
JNI->通用硬件模塊->硬件模塊->內核驅動接口
具體一點:JNI->libhardware.so->xxx.xxx.so->kernel
具體來講:android frameworks中JNI調用/hardware/libhardware/hardware.c中定義的hw_get_module函數來獲取硬件模塊,
而後調用硬件模塊中的方法,硬件模塊中的方法直接調用內核接口完成相關功能

3硬件模塊
硬件模塊的開發主要是完成/hardware/libhardware/include/hardware目錄下對應的頭文件中的內容,主要是硬件模塊頭文件和hardware.h中
的結構體中定義了一些函數指針,調用內核提供的接口將具體的函數實現,而後編譯成指定名稱的動態連接庫放到/system/lib/hw目錄下便可。
用一句話來歸納:硬件模塊的開發就是定義一個hardware.h中定義的hw_module_t結構體,結構體名稱爲宏HAL_MODULE_INFO_SYM,而後實現結構體
的相關內容便可。

4,內核驅動
主要是要向用戶層開放接口,讓硬件模塊和內核能夠交互。指針

相關文章
相關標籤/搜索