ITBEAR科技资讯
网站首页 科技资讯 财经资讯 分享好友

HDI硬件设备接口介绍

时间:2022-04-28 11:39:53来源:互联网编辑:星辉

HDF驱动框架是OpenHarmony系统硬件生态开放的基础,为驱动开发者提供了驱动加载、驱动服务管理和驱动消息机制等驱动框架能力,同时还为开发者提供了规范的HDI硬件设备接口,让开发者能屏蔽南向设备差异,提供更好的硬件。本文将为大家带来HDI 硬件设备接口的介绍。

图1 HDF驱动框架

1. HDI介绍

HDI(Hardware Device Interface,硬件设备接口)是HDF驱动框架为开发者提供的硬件规范化描述性接口。在OpenHarmony 分层结构中,HDI位于 “基础系统服务层”和“设备抽象层(DAL)”之间。硬件设备通过DAL抽象化,并基于IDL(Interface Description Language)接口描述语言描述后,为上层应用或服务提供了规范的硬件设备接口。

图2 OpenHarmony 分层结构

HDI支持“IPC模式”及“直通模式”两种调用方式。其中,IPC模式即跨进程通信模式,基于binder机制实现,调用端通过Proxy代理库调用HDI接口,具备良好的解耦性和安全性,是标准系统的默认部署方式。直通模式,将HDI实现为共享库,调用端使用dlopen加载HDI实现库并直接调用HDI接口,是小型系统的默认部署方式,同时还适用于对性能有特殊需求的标准系统模块。

图3 两种调用方式

HDI硬件设备接口的优点用一句话总结就是:为硬件的接入提供了统一的实现通路。屏蔽了硬件接口的具体实现,实现系统软件与硬件的架构解耦。让开发者专注于硬件接口的使用,从而简化开发过程,提升开发效率。

2. HDI实现

通过上文的介绍,相信很多小伙伴会有疑问,HDI接口是怎么实现的呢?下面我们将为你介绍IPC模式下基于C/S(Client-Server客户端与服务端)结构的HDI接口实现。

2.1 IDL接口描述语言

为方便后文的理解,我们先简单了解一下IDL接口描述语言。

IDL(Interface Description Language)是一类用来描述接口的语言,通过一种中立的方式来定义客户端与服务端均认可的编程接口,可以实现在二者间的跨进程通信(IPC)。跨进程通信意味着可以在一个进程访问另一个进程的数据,或调用另一个进程的方法。通常把应用接口提供方(供调用)称为服务端,调用方称为客户端。

IDL先把需要传递的对象分解成操作系统能够理解的基本类型,然后根据接口声明编译,生成IPC/RPC代理(Proxy)和桩(Stub)的C/C++代码,从而为调用者提供一致的接口和调用方式。

图4 IDL IPC模式通信模型

2.1 基于IDL语言实现HDI接口

首先,使用IDL语法描述HDI接口并保存为.idl文件,然后编写.idl文件的编译脚本BUILD.gn文件,最后编译.idl文件即可。下面我们将为大家演示电源子系统的HDI接口的实现过程。

(1)使用IDL语法编写 .idl 文件

● 定义电源接口 IPowerInterface.idl

● 如果需要从服务端回调,可以定义callback接口类IPowerHdiCallback.idl

● 如果interface中用到了自定义数据类型,将自定义类型定义到powerTypes.idl

(2)编写.idl 文件的编译脚本BUILD.gn

(3)编译 .idl文件

使用编译工具hdi-gen编译IDL文件,IDL文件在编译过程中转换为C/C++语言的函数接口声明、客户端与服务端IPC相关过程代码,开发者只需要基于生成的power.h函数接口实现具体服务功能即可。编译后生成代码在out/product/gen/drivers/interface/power中,接口代码如下:

(4)实现HDI接口

● 实现UHDF Driver,用于将HDI实现加载为独立进程,并基于HDF驱动框架发布设备服务。

● 实现HDI接口

3. HDI使用

通过上文的介绍,相信大家已经对HDI有了一定的了解,下面我们将为大家介绍HDI的使用,在直通模式下,对HDI接口调用为同一进程空间函数调用,过程较为直接,这里我们重点阐述IPC模式下的调用原理,然后通过CPP语言来展示电源子系统HDI的调用。

3.1 调用原理

在IPC模式下,当系统服务调用HDI接口时,通过proxy库将函数调用转换为IPC请求,将接口调用的参数进行序列化;IPC请求通过IPC框架发送到服务端,请求将被stub库先处理,然后对接口调用的参数进行反序列化,再转换成对服务实现的函数调用,从而实现接口调用过程。

图5 HDI调用过程

3.2 基于CPP语言的使用

上文已经编译生成了电源子系统的HDI接口,下面我们来看看如何使用CPP语言来调用HDI接口吧。

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

(2)在实现电源子系统的代码中调用HDI接口,代码如下:

4. 结语

以上就是本文全部内容,我们在这里简单介绍了HDI接口的实现思路及使用,对于广大南向开发者,我们还在社区提供了详细的HDI接口实现指导,欢迎大家在gitee社区参与更多讨论。

社区链接:https://gitee.com/openharmony/drivers_interface

更多热门内容
国补手机哪些适合大学生:联想razr60与edge 60精选
开学季来临,换新手机是许多大学生的刚需。作为学生党,既追求时尚外观和实用功能,又对价格敏感,有国补又能叠加学生优惠的手机无疑是双赢的选择。即使预算不多也可拿下主流直屏手机,还可考虑时尚潮流的折叠屏,比如联想moto razr 60系列。以下就给学生朋友们分享折叠

2025-08-21

国补加持下的平板电脑推荐:从百元助学到旗舰AI
在当前国补政策的红利下,平板电脑市场的价格变动使得消费者迎来了难得的入手良机。联想作为国内平板市场的主流品牌,旗下多款产品均纳入国补范围,从百元级助学神器到旗舰级AI生产力工具,形成了完整的价格梯度覆盖。这里我将分享其中六款热门的平板型号,从性能解析、

2025-08-21

2025国补尾巴,笔记本电脑值得推荐的三大系列
2025 年笔记本国补政策进入最后三个月冲刺期,截至12月31日,购买联想指定机型可享双重福利:直接补贴最高2000元+学生认证额外9折,综合优惠力度创年内新高。本次聚焦拯救者、小新、YOGA三大系列八款核心机型,按游戏电竞、移动办公、创意设计三大场景分类推荐,结合国

2025-08-21

从“手动挡”进入“AI智能挡”:亚数TrustAsia 开启证书管理「服务化」新时代
在数字化转型加速推进的当下,TLS/SSL证书作为网络安全体系的关键基础设施,通过实现端到端加密传输、身份验证,为保障企业关键业务数据安全和构建可信网络环境发挥着至关重要的作用。随着密码学技术向抗量子计算范式演进,行业对加密敏捷性(Cryptographic Agility)要求

2025-08-21

科隆游戏展:纯血进化 ROGXBOX掌机X正式发布
核心亮点:l 全新软件生态体验:ROG联手XBOX共同打造,融合XBOX全新前端、奥创智控中心SE、Windows开放式体验优势,便携式游戏体验全面跃升l 握持体验大升级:全新手柄设计优化人体工学曲线,引入XBOX标志性的脉冲扳机,媲美专业XBOX手柄舒适握持l 次世代性能:首发搭载

2025-08-21

不止能干活!新能源汽车排行爆款上汽大通大拿V1重新定义轻客角色
说实话,要不是亲身体验过,我真不会相信我们家开得最多的车,竟然是一台轻客。以前一直觉得轻客就是干活用的,拉货、送快递那类,和家用根本不搭边。但生活总有些现实需求:家里有人做小本生意,有孩子要接送,还有老爸喜欢自驾游。原来的小轿车早就不够用了,换来换去

2025-08-21

声态+AI |2026中国国际音频产业大会(GAS)明年3月举办
随着生成式AI的快速发展声音已成为人机交互、虚拟现实和情感体验的核心纽带GAS 2026将共同探讨AI如何重塑音频创作、传输与消费的全链条2026中国国际音频产业大会(GAS 2026)时间:2026年3月25—26日地点:上海张江科学会堂主题:声态+AI主办单位:中国电子音响行业协会

2025-08-21

益生菌对增肥哪个牌子好看完这篇不再纠结
你有没有过这样的经历:明明吃得不多,体重却一直上不去,甚至有点“喝凉水都难胖”的无奈?我就是这样一个肠胃敏感、代谢快得像开了挂的人。试过增肌粉、蛋白棒、高热量饮食,效果微乎其微。直到三年前,一位营养师朋友提醒我:“你是不是忽略了肠道环境?吸收不好,吃再多也没

2025-08-21

深耕垂类大模型!中关村科金入选2025年《财富》中国科技50强
2025年8月21日,全球最具影响力的商业媒体之一《财富》(FORTUNE)正式发布“2025年中国科技50强”榜单。中关村科金凭借在垂类大模型领域从技术研发、平台应用到产业落地的全链条能力,成功登榜。《财富》系列榜单一直被视为全球商业发展趋势的风向标,具有极高的权威性和

2025-08-21

下一个爆款在哪儿?2025英特尔人工智能创新应用大赛获奖名单揭晓
8月16日,2025英特尔人工智能创新应用大赛总决赛暨颁奖典礼在深圳盛大启幕。历经层层选拔,从2817支年轻队伍中脱颖而出的40个优秀团队和作品,围绕工业、教育、心理健康、游戏等领域,展开了巅峰对决。最终,在总决赛现场,各项重磅大奖尘埃落定。其中,动力电池多机器

2025-08-21