為Android添加HAL模組(轉)

來源:互聯網
上載者:User

標籤:

1.每個硬體抽象層模組在核心中都對應一個驅動程式,硬體抽象層模組就時通過這些驅動程式來訪問硬體裝置的,它們是通過讀寫裝置檔案來進行通訊的。

硬體抽象層中的模組介面源檔案一般儲存在hardware/libhardware目錄中,為了方便起見,我們將虛擬硬體裝置freg在硬體抽象層中的模組名稱定義為freg,目錄結構如下:
hardware/libhardware/include/hardware/freg.h
hardware/libhardware/modules/freg/Android.mk
hardware/libhardware/modules/freg/freg.cpp

上述三個檔案分別對應模組的標頭檔、makefile檔案、源檔案。

2.HAL層的編譯步驟
首先要修改hardware/libhardware/modules下面的Android.mk檔案,如下:

hardware_modules := gralloc hwcomposer audio nfc nfc-nci local_time \    power usbaudio audio_remote_submix camera consumerir sensors vibrator \    tv_input fingerprint freginclude $(call all-named-subdir-makefiles,$(hardware_modules))

修改點:將freg加入到hardware_modules變數當中

編譯:mmm ./hardware/libhardware/modules
結果:會產生一個HAL層的動態庫,比如freg.default.so

3.查看freg.default.so
使用linux的nm工具可以查看動態庫的符號表,我們查看out/target/product/XXXX/symbols/system/lib/hw
目錄下面的freg.default.so動態庫檔案,命令如下:

nm freg.default.so

輸出:

00000549 t _ZL12freg_get_valP13freg_device_tPi0000059d t _ZL12freg_set_valP13freg_device_ti000004b9 t _ZL16freg_device_openPK11hw_module_tPKcPP11hw_device_t000004ad t _ZL17freg_device_closeP11hw_device_t00002084 d _ZL19freg_module_methods

我們就可以看到確實是有HAL層的函數被編入。

4.載入硬體抽象層模組
上面我們產生了硬體抽象層對應的.so檔案,那麼怎麼載入.so呢?Android系統中的硬體抽象層是由系統統一載入的,當調用者需要載入這些模組時,只要指定ID就可以了,在Android硬體抽象層中,負責載入硬體抽象層的函數是hw_get_module函數,原型如下:

int hw_get_module(const char *id, const struct hw_module_t **module);

比如我們傳入參數FREG_HARDWARE_MODULE_ID,即”freg”,函數內部找到相應的.so檔案,然後,最後調用load載入。

為Android添加HAL模組(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.