0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Android硬件通訊之HIDL介紹

哆啦安全 ? 來(lái)源:Android開發(fā)編程 ? 2023-03-08 15:52 ? 次閱讀

一、前言

HIDL的全稱是HAL interface definition language(硬件抽象層接口定義語(yǔ)言),是AndroidFramework 與Android HAL之間的接口。HIDL 旨在用于進(jìn)程間通信 (IPC),進(jìn)程之間的通信采用 Binder 機(jī)制;

Android O(8.0)版本之后,底層實(shí)現(xiàn)有了比較大的變化,最顯著的一個(gè)方面就是HIDL機(jī)制的全面實(shí)施。今天我們介紹下。

二、HIDL 設(shè)計(jì)目的

Android O(8.0)之前系統(tǒng)的升級(jí)牽扯多方協(xié)作,極為麻煩,HIDL機(jī)制的推出就是將frameworkhal層分開,使得框架部分可以直接被覆蓋、更新,而不需要重新對(duì) HAL 進(jìn)行編譯,這樣在系統(tǒng)升級(jí)時(shí),OEM廠商 跳過(guò)SoC廠商,先對(duì)framework進(jìn)行升級(jí)。

2.1、8.0 之前

frameworkhal緊緊耦合存在于system.img中,因此在版本升級(jí)時(shí)需要:OEM廠商適配framework,SoC廠商適配hal, 之后將修改打包到system.img,生成 OTA 升級(jí)包,推送到手機(jī)進(jìn)行 OTA 升級(jí)

2.2、8.0 之后

frameworkhal進(jìn)行了解耦,framework存在于system.img,hal存在于vendor.img,進(jìn)行版本升級(jí)時(shí),分為兩次升級(jí):

framework升級(jí):OEM 廠商適配 framework,將修改打包到 system.img, 生成OTA 升級(jí)包,推送到手機(jī)進(jìn)行 OTA 升級(jí)(framework 發(fā)生改變,hal 層未變)。

hal升級(jí):SoC 廠商適配 hal, 將修改打包到 vendor.img, 生成OTA 升級(jí)包,推送到手機(jī)進(jìn)行OTA升級(jí)(framework發(fā)生改變,hal 層發(fā)生改變)。

三、HIDL機(jī)制演進(jìn)

3.1 老版本 Framework 與 HAL 的通信框架

舊版的系統(tǒng)架構(gòu)中, Android Framework 層與 Hal 層是打包成一個(gè)system.img的,且 Framework 與 hal 層之間是緊密耦合的,通過(guò)鏈接的方式使用相應(yīng)的硬件so庫(kù)。它們之間的架構(gòu)一般有如下兩種方式:

7c322bbe-bb08-11ed-bfe3-dac502259ad0.png

3.2 HIDL 類型介紹

為了解決兩者之間這種緊耦合所帶來(lái)的弊端,google 引入 HIDL 來(lái)定義 Framework 與 HAL 之間的接口,可以用下圖來(lái)描述:

7c6aa372-bb08-11ed-bfe3-dac502259ad0.png

事實(shí)上雖然 google 推出了這種機(jī)制,但是很多廠商沒(méi)有很快的跟上節(jié)奏,因此為了向前兼容, google 定義了三種類型:

7c8d8cc0-bb08-11ed-bfe3-dac502259ad0.png

① 是 Treble Project 之前使用的實(shí)現(xiàn)架構(gòu),使用的是傳統(tǒng) HAL 和舊版 HAL

② 直通模式,passthrough mode。如圖所示,F(xiàn)ramework 和 HAL 層工作在同一個(gè)進(jìn)程當(dāng)中,下面的 HAL 是使用 HIDL 封裝后的庫(kù),是直通式 HAL。這些庫(kù)文件也可用于 ③ 綁定模式

③ 綁定模式,binderized mode。是直通式 HAL binder 化,變?yōu)榻壎ㄊ?HAL。Framework 和 HAL 層工作在不同的進(jìn)程,之間通過(guò) Binder 進(jìn)行 IPC

④ 純綁定式。相對(duì)于 ③ 來(lái)說(shuō),綁定式 HAL 中并不包含直通式 HAL,因此稱為純綁定式

上述可總結(jié)為

7cb0d752-bb08-11ed-bfe3-dac502259ad0.jpg





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3917

    瀏覽量

    127040
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4099

    瀏覽量

    217782
  • IPC
    IPC
    +關(guān)注

    關(guān)注

    3

    文章

    337

    瀏覽量

    51772
  • HAL
    HAL
    +關(guān)注

    關(guān)注

    2

    文章

    69

    瀏覽量

    12577

原文標(biāo)題:Android的硬件通訊之HIDL介紹

文章出處:【微信號(hào):哆啦安全,微信公眾號(hào):哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Android系統(tǒng)與應(yīng)用開發(fā)內(nèi)容介紹

    建立,為后面的Android移植打好基礎(chǔ)。1、PXA270硬件平臺(tái)介紹2、安裝交叉編譯工具鏈與其他相關(guān)工具3、移植bootloader到PXA270硬件平臺(tái)4、移植Linux內(nèi)核到PX
    發(fā)表于 07-13 14:03

    Android介紹

    Android介紹:HTC G1操作界面Android 是Google開發(fā)的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)。它包括操作系統(tǒng)、用戶界面和應(yīng)用程序 —— 移動(dòng)電話工作所需的全部軟件,而且
    發(fā)表于 08-15 14:10

    干貨!Android藍(lán)牙驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn)

    干貨!Android藍(lán)牙驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn)?zāi)夸浺?Bluetooth基本概念1二 Android Bluetooth架構(gòu)12.1 Bluetooth架構(gòu)圖12.2 Bluetooth代碼層次結(jié)構(gòu)3三
    發(fā)表于 02-29 15:53

    AndroidsettingsWifi學(xué)習(xí)

    AndroidsettingsWifi學(xué)習(xí)
    發(fā)表于 11-02 10:52

    Androidwifi分析(上)

    Androidwifi分析(上)
    發(fā)表于 11-02 10:53

    基于Android的平板和具備USB控制功能的微處理器之間建立通訊介紹方案

    和具備USB控制功能的微處理器之間建立這樣的通訊介紹一個(gè)基本的方案?! SB主控的一個(gè)關(guān)鍵特點(diǎn)是能為USB裝置(或從設(shè)備)供電,并提供了一個(gè)非常豐富的通信協(xié)議,支持傳輸相對(duì)大量的數(shù)據(jù)。然而,就協(xié)議
    發(fā)表于 06-05 05:00

    嵌入式擴(kuò)展板模塊按鍵硬件介紹

    藍(lán)橋杯嵌入式擴(kuò)展板模塊按鍵硬件介紹Button.cButton.c函數(shù)實(shí)現(xiàn)的講解Button.h總結(jié)硬件介紹U1S1這是我見到過(guò)最NB的
    發(fā)表于 12-20 06:06

    IMX8mq Android 11 BSP很快失敗,無(wú)法解析JSON:* 9330行怎么解決?

    /.intermediates/system/libhidl/transport/manager/1.0/android.hidl.manager@1.0_genc++_headers/gen -Iout
    發(fā)表于 03-22 07:45

    Android平臺(tái)簡(jiǎn)易即時(shí)通訊方案

    論文簡(jiǎn)單介紹Android平臺(tái)的特性,主要闡述了基于Android平臺(tái)簡(jiǎn)易即時(shí)通訊(IM)的作用和功能以及實(shí)現(xiàn)方法。
    發(fā)表于 02-21 10:27 ?5131次閱讀
    <b class='flag-5'>Android</b>平臺(tái)簡(jiǎn)易即時(shí)<b class='flag-5'>通訊</b>方案

    android界面切換動(dòng)畫效果全匯總

    android界面切換動(dòng)畫效果全匯總
    發(fā)表于 03-19 11:23 ?0次下載

    ARM嵌入式系統(tǒng)開發(fā)Android開發(fā)入門

    介紹了ARM嵌入式系統(tǒng)開發(fā)Android開發(fā)入門基礎(chǔ)。
    發(fā)表于 03-17 11:46 ?24次下載
    ARM嵌入式系統(tǒng)開發(fā)<b class='flag-5'>之</b><b class='flag-5'>Android</b>開發(fā)入門

    Verilog HIDL的RTL設(shè)計(jì)風(fēng)格指南資源下載

    Verilog HIDL的RTL設(shè)計(jì)風(fēng)格指南資源下載
    發(fā)表于 04-13 10:09 ?9次下載

    Android智能硬件開發(fā)串口通信介紹

    串口通信是Android智能硬件開發(fā)所必須具備的能力,市面上類型眾多的外設(shè)基本都是通過(guò)串口進(jìn)行數(shù)據(jù)傳輸?shù)?,所以說(shuō)不會(huì)串口通信根本就做不了智能硬件開發(fā)。
    的頭像 發(fā)表于 07-03 16:27 ?4512次閱讀

    Android Q打通應(yīng)用層到HAL層(HIDL服務(wù)實(shí)現(xiàn))

    AndroidQ 打通應(yīng)用層到HAL層—(HAL模塊實(shí)現(xiàn))這篇文章中我們已經(jīng)實(shí)現(xiàn)了自己的HAL,本篇我們實(shí)現(xiàn)一個(gè)HIDL服務(wù),通過(guò)這個(gè)服務(wù)來(lái)調(diào)用HAL模塊的函數(shù)
    的頭像 發(fā)表于 02-21 10:28 ?2893次閱讀

    基于Android平臺(tái)的個(gè)性通訊

    電子發(fā)燒友網(wǎng)站提供《基于Android平臺(tái)的個(gè)性通訊錄.doc》資料免費(fèi)下載
    發(fā)表于 10-30 11:32 ?0次下載
    基于<b class='flag-5'>Android</b>平臺(tái)的個(gè)性<b class='flag-5'>通訊</b>錄