微软官方MSDN原版Win10系统下载

现在位置: 首页  > IT资讯

HDI硬件设备接口介绍

时间:2024-11-16 04:28:38   

大家好,今天Win10系统之家小编给大家分享「HDI硬件设备接口介绍」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

device info设备信息app系列软件最新版本下载

  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

以上就是关于「HDI硬件设备接口介绍」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

♂本文*来源Win10系统之家,未经同意不得转载!

相关文章

  • HDI硬件设备接口介绍

    HDI硬件设备接口介绍

    HDF驱动框架是OpenHarmony系统硬件生态开放的基础,为驱动开发者提供了驱动加载、驱动服务管理和驱动消息机制等驱动框架能力,同时还为开发者提供了规范的HDI硬件设备接口,让开发者能屏蔽南向设备差异,提供更好的硬件。...
  • AMD RX 6000 公版显卡确认搭载 USB-C 接口,有望支持雷电传输协议

    AMD RX 6000 公版显卡确认搭载 USB-C 接口,有望支持雷电传输协议


      9月15日消息AMD今天发布了RX6000系列显卡的外观设计,由上代的涡轮散热变为了三风扇散热。AMD还与EpicGames合作推出了《堡垒之夜》地图,展示了这款显卡的3D设计。
      如上图所示,RX6000系列公版显卡采用了一个HDMI接口和两个DP接口,还有一个USB-C接口。IT之家了解到,由于VR设备的普及度不高,英伟达RTX20系列公版上的VirtualLinkUS...
  • 苹果被控窃取血氧监测技术,智能可穿戴设备健康赛道竞争升温

    苹果被控窃取血氧监测技术,智能可穿戴设备健康赛道竞争升温


      疫情过后,人们对于智能可穿戴产品的健康检测功能越来越重视。作为一种辅助检测手段,血氧测量逐渐成为了消费者热衷追捧的一项功能,这一点同样体现在各大智能可穿戴厂商发布的新品中,苹果也不例外,在新发布的AppleWatchSeries6中加入了血氧测量功能。
      尴尬的是,AppleWatchSeries6发布不足1个月,苹果公司便被指控窃取血氧监测技术。本周一晚间,医疗传感器制造...
  • 华挚推出基于Tiger Lake-U的三款NUC 1100 BOX系列设备

    华挚推出基于Tiger Lake-U的三款NUC 1100 BOX系列设备


      英特尔的TigerLake-U系列处理器TDP最高支持28W,这使得厂商在官方NUC的100mmx100mm的超紧凑外形设计(UCFF)基础上,推出了很多有趣的系统。其中最值得一提是技嘉的BRIXPRO(3.5英寸SBC外形),以及华擎的STX-1500mini-STX主板,后者支持嵌入式TigerLake-U处理器。
      基于TigerLake的英特尔NUC(Panther...