小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

HDI硬件設(shè)備接口介紹

 開(kāi)花結(jié)果 2022-05-20 發(fā)布于北京

HDF驅(qū)動(dòng)框架是OpenHarmony系統(tǒng)硬件生態(tài)開(kāi)放的基礎(chǔ),為驅(qū)動(dòng)開(kāi)發(fā)者提供了驅(qū)動(dòng)加載、驅(qū)動(dòng)服務(wù)管理和驅(qū)動(dòng)消息機(jī)制等驅(qū)動(dòng)框架能力,同時(shí)還為開(kāi)發(fā)者提供了規(guī)范的HDI硬件設(shè)備接口,讓開(kāi)發(fā)者能屏蔽南向設(shè)備差異,提供更好

HDF驅(qū)動(dòng)框架是OpenHarmony系統(tǒng)硬件生態(tài)開(kāi)放的基礎(chǔ),為驅(qū)動(dòng)開(kāi)發(fā)者提供了驅(qū)動(dòng)加載、驅(qū)動(dòng)服務(wù)管理和驅(qū)動(dòng)消息機(jī)制等驅(qū)動(dòng)框架能力,同時(shí)還為開(kāi)發(fā)者提供了規(guī)范的HDI硬件設(shè)備接口,讓開(kāi)發(fā)者能屏蔽南向設(shè)備差異,提供更好的硬件。本文將為大家?guī)?lái)HDI 硬件設(shè)備接口的介紹。

HDI硬件設(shè)備接口介紹

圖1 HDF驅(qū)動(dòng)框架

1. HDI介紹

HDI(Hardware Device Interface,硬件設(shè)備接口)是HDF驅(qū)動(dòng)框架為開(kāi)發(fā)者提供的硬件規(guī)范化描述性接口。在OpenHarmony 分層結(jié)構(gòu)中,HDI位于 “基礎(chǔ)系統(tǒng)服務(wù)層”和“設(shè)備抽象層(DAL)”之間。硬件設(shè)備通過(guò)DAL抽象化,并基于IDL(Interface Description Language)接口描述語(yǔ)言描述后,為上層應(yīng)用或服務(wù)提供了規(guī)范的硬件設(shè)備接口。

HDI硬件設(shè)備接口介紹

圖2 OpenHarmony 分層結(jié)構(gòu)

HDI支持“IPC模式”及“直通模式”兩種調(diào)用方式。其中,IPC模式即跨進(jìn)程通信模式,基于binder機(jī)制實(shí)現(xiàn),調(diào)用端通過(guò)Proxy代理庫(kù)調(diào)用HDI接口,具備良好的解耦性和安全性,是標(biāo)準(zhǔn)系統(tǒng)的默認(rèn)部署方式。直通模式,將HDI實(shí)現(xiàn)為共享庫(kù),調(diào)用端使用dlopen加載HDI實(shí)現(xiàn)庫(kù)并直接調(diào)用HDI接口,是小型系統(tǒng)的默認(rèn)部署方式,同時(shí)還適用于對(duì)性能有特殊需求的標(biāo)準(zhǔn)系統(tǒng)模塊。

HDI硬件設(shè)備接口介紹

圖3 兩種調(diào)用方式

HDI硬件設(shè)備接口的優(yōu)點(diǎn)用一句話總結(jié)就是:為硬件的接入提供了統(tǒng)一的實(shí)現(xiàn)通路。屏蔽了硬件接口的具體實(shí)現(xiàn),實(shí)現(xiàn)系統(tǒng)軟件與硬件的架構(gòu)解耦。讓開(kāi)發(fā)者專注于硬件接口的使用,從而簡(jiǎn)化開(kāi)發(fā)過(guò)程,提升開(kāi)發(fā)效率。

2. HDI實(shí)現(xiàn)

通過(guò)上文的介紹,相信很多小伙伴會(huì)有疑問(wèn),HDI接口是怎么實(shí)現(xiàn)的呢?下面我們將為你介紹IPC模式下基于C/S(Client-Server客戶端與服務(wù)端)結(jié)構(gòu)的HDI接口實(shí)現(xiàn)。

2.1 IDL接口描述語(yǔ)言

為方便后文的理解,我們先簡(jiǎn)單了解一下IDL接口描述語(yǔ)言。

IDL(Interface Description Language)是一類用來(lái)描述接口的語(yǔ)言,通過(guò)一種中立的方式來(lái)定義客戶端與服務(wù)端均認(rèn)可的編程接口,可以實(shí)現(xiàn)在二者間的跨進(jìn)程通信(IPC)??邕M(jìn)程通信意味著可以在一個(gè)進(jìn)程訪問(wèn)另一個(gè)進(jìn)程的數(shù)據(jù),或調(diào)用另一個(gè)進(jìn)程的方法。通常把應(yīng)用接口提供方(供調(diào)用)稱為服務(wù)端,調(diào)用方稱為客戶端。

IDL先把需要傳遞的對(duì)象分解成操作系統(tǒng)能夠理解的基本類型,然后根據(jù)接口聲明編譯,生成IPC/RPC代理(Proxy)和樁(Stub)的C/C++代碼,從而為調(diào)用者提供一致的接口和調(diào)用方式。

  圖4 IDL IPC模式通信模型

2.1 基于IDL語(yǔ)言實(shí)現(xiàn)HDI接口

首先,使用IDL語(yǔ)法描述HDI接口并保存為.idl文件,然后編寫.idl文件的編譯腳本BUILD.gn文件,最后編譯.idl文件即可。下面我們將為大家演示電源子系統(tǒng)的HDI接口的實(shí)現(xiàn)過(guò)程。

(1)使用IDL語(yǔ)法編寫 .idl 文件

● 定義電源接口 IPowerInterface.idl

HDI硬件設(shè)備接口介紹

● 如果需要從服務(wù)端回調(diào),可以定義callback接口類IPowerHdiCallback.idl

HDI硬件設(shè)備接口介紹

● 如果interface中用到了自定義數(shù)據(jù)類型,將自定義類型定義到powerTypes.idl

HDI硬件設(shè)備接口介紹

(2)編寫.idl 文件的編譯腳本BUILD.gn

HDI硬件設(shè)備接口介紹

(3)編譯 .idl文件

使用編譯工具h(yuǎn)di-gen編譯IDL文件,IDL文件在編譯過(guò)程中轉(zhuǎn)換為C/C++語(yǔ)言的函數(shù)接口聲明、客戶端與服務(wù)端IPC相關(guān)過(guò)程代碼,開(kāi)發(fā)者只需要基于生成的power.h函數(shù)接口實(shí)現(xiàn)具體服務(wù)功能即可。編譯后生成代碼在out/product/gen/drivers/interface/power中,接口代碼如下:

HDI硬件設(shè)備接口介紹

(4)實(shí)現(xiàn)HDI接口

● 實(shí)現(xiàn)UHDF Driver,用于將HDI實(shí)現(xiàn)加載為獨(dú)立進(jìn)程,并基于HDF驅(qū)動(dòng)框架發(fā)布設(shè)備服務(wù)。

HDI硬件設(shè)備接口介紹

● 實(shí)現(xiàn)HDI接口

HDI硬件設(shè)備接口介紹

3. HDI使用

通過(guò)上文的介紹,相信大家已經(jīng)對(duì)HDI有了一定的了解,下面我們將為大家介紹HDI的使用,在直通模式下,對(duì)HDI接口調(diào)用為同一進(jìn)程空間函數(shù)調(diào)用,過(guò)程較為直接,這里我們重點(diǎn)闡述IPC模式下的調(diào)用原理,然后通過(guò)CPP語(yǔ)言來(lái)展示電源子系統(tǒng)HDI的調(diào)用。

3.1 調(diào)用原理

在IPC模式下,當(dāng)系統(tǒng)服務(wù)調(diào)用HDI接口時(shí),通過(guò)proxy庫(kù)將函數(shù)調(diào)用轉(zhuǎn)換為IPC請(qǐng)求,將接口調(diào)用的參數(shù)進(jìn)行序列化;IPC請(qǐng)求通過(guò)IPC框架發(fā)送到服務(wù)端,請(qǐng)求將被stub庫(kù)先處理,然后對(duì)接口調(diào)用的參數(shù)進(jìn)行反序列化,再轉(zhuǎn)換成對(duì)服務(wù)實(shí)現(xiàn)的函數(shù)調(diào)用,從而實(shí)現(xiàn)接口調(diào)用過(guò)程。

  圖5 HDI調(diào)用過(guò)程

3.2 基于CPP語(yǔ)言的使用

上文已經(jīng)編譯生成了電源子系統(tǒng)的HDI接口,下面我們來(lái)看看如何使用CPP語(yǔ)言來(lái)調(diào)用HDI接口吧。

(1)客戶端在BUILD.gn中增加依賴: //drivers/interface/foo/v1.0:libfoo_proxy_1.0"

HDI硬件設(shè)備接口介紹

(2)在實(shí)現(xiàn)電源子系統(tǒng)的代碼中調(diào)用HDI接口,代碼如下:

HDI硬件設(shè)備接口介紹

4. 結(jié)語(yǔ)

以上就是本文全部?jī)?nèi)容,我們?cè)谶@里簡(jiǎn)單介紹了HDI接口的實(shí)現(xiàn)思路及使用,對(duì)于廣大南向開(kāi)發(fā)者,我們還在社區(qū)提供了詳細(xì)的HDI接口實(shí)現(xiàn)指導(dǎo),歡迎大家在gitee社區(qū)參與更多討論。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多