0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【技术视界】分布式系统硬件资源池原理和接入实践

HarmonyOS开发者 来源:未知 2023-12-05 21:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

# 技术视界# 【技术视界】栏目为开发者提供华为研发专家对于HarmonyOS关键技术的专业解读,从不同角度、不同方面帮助开发者更好更快地掌握HarmonyOS相关开发知识。本期文章为大家带来的是分布式硬件技术专家的分享,希望为您的开发之路带来启发~

作者:ZhangChuang,华为分布式硬件技术专家

硬件资源池理念产生背景

随着智能设备的发展和普及,越来越多的智能设备已经深入人们的生活,比如手机PC,平板,各类穿戴设备等。当前单个设备的外设资源已经非常丰富,硬件能力也很强大。像我们的手机PC、平板都有相机音频屏幕,键鼠等各种外设资源;但是这些硬件外设是属于各个设备自身的,如果涉及到跨设备的协同操作就会比较繁琐。比如用户正在PC上编辑文档,需要从平板复制一段文字,或者使用手机拍摄照片,然后插入文档作为素材,需要用户在各个设备上分别操作,然后发送文字或者图片到PC,然后再回到PC进行编辑,非常繁琐。如果应用开发者从应用层实现设备间硬件能力共享,对于应用开发者工作量和难度非常大,而且各个应用之间需要重复开发,能力难以复用和继承。

wKgZomVvKDOAJYOfAAFY4UE7BIQ273.png

图1 单设备硬件孤立难以共享

为此,鸿蒙系统提出了硬件资源池的理念,打破了各个设备硬件的孤立状态,能够做到设备间硬件外设全局共享。我们把各个设备的硬件外设抽象为外设信息单元,外设信息在各个可信设备之间自动同步,如此,实现了外设信息的全局可见;结合分布式硬件虚拟化技术,实现任意设备之间的硬件外设能力跨设备调用;分布式硬件资源池作为系统能力下沉系统底层,北向开发者不感知资源池的存在;跨设备硬件和本地硬件使用同一套API,开发者调用跨设备硬件体验和本地硬件一致,如此明显的便利了开发者调用跨设备硬件,开发者无需关注硬件底层细节,专注于业务创新。

wKgZomVvKDOAJ11rAAG6Wffp6kE793.png图2 硬件资源池打破硬件边界,全局共享

鸿蒙系统硬件资源池支持场景

鸿蒙系统采用硬件资源池的理念,能够结合多个设备的优势硬件为用户提供更优的体验,同时支持了消费者和开发者的多种创新体验。

2.1消费者场景

在消费者层面,华为分布式硬件支持智慧办公,智慧出行等多种创新场景。例如智慧办公场景中,使用一套PC键鼠即可和周边平板等设备跨设备操作,使用到键鼠外设的跨设备操控能力;多屏协同场景中,手机屏幕显示到平板,手机视频通话可以使用平板的麦克风和摄像头,用户在平板上即可同时操作手机平板两台设备,避免设备间来回切换,操作方便,这个场景使用到了麦克风,扬声器,摄像头和屏幕等硬件的跨设备分布式能力。

在智慧出行场景中,用户在手机上听音乐或者视频通话,进入座舱后,手机上的音乐和通话可以自动接续到车机,使用车机的音频外设播音和拾音,使用车机的摄像头进行视频通话,更加符合用户在座舱中的使用习惯;手机导航接续到车机后,车机的GPS信号可以共享给手机,结合手机GPS信号提供更高精度的定位数据;可以看到,在智慧出行场景中,可以通过分布式硬件资源池结合手机和车机的优势硬件,为用户提供更好的服务体验。

wKgZomVvKDOAeId3AAPNpEwT8Tc565.png

图3 鸿蒙硬件资源池支持各类消费者场景

2.2开发者场景

对于开发者来说,由于分布式硬件资源池将跨设备硬件调用的复杂度都封装在了系统底层,跨设备硬件复用本地硬件的API,开发者学习和适配难度可以做到最低。

以分布式相机为例,相机接口可以同时查询到本地相机和跨设备相机外设,本地相机和跨设备相机通过ConnectionType.CAMERA_CONNECTION_REMOTE属性相区分,开发者通过该属性过滤出分布式相机后,其他操作和本地相机完全一致。无需为使用跨设备硬件学习一套独立的API,很大程度上的简化了开发者开发难度。wKgZomVvKDOAXC9UAANoFlFOYQA957.png

图4 分布式硬件开发者使用示例

硬件资源池原理

以相机和音频为例,假设设备A和设备B都有各自的相机和音频外设,驱动层有对应的本地相机和本地音频驱动。

wKgZomVvKDOAc72oAAIrBK7Y66k422.png

图5分布式硬件资源池原理示意

分布式硬件从各自设备本地采集相机和音频驱动信息,存入分布式数据库。如果AB两个设备建立了可信关系并且通过软总线组网上线成功,分布式数据库会在AB两个设备之间自动同步各自的本地外设数据信息,这样,设备A分布式硬件可以拿到设备B的相机和音频外设规格数据,同样,设备B也可以拿到设备A的相机和音频外设规格数据。

以设备A的流程为例,分布式硬件收到对端设备B的硬件规格数据后,在驱动层注册对应的虚拟相机和虚拟音频驱动,虚拟驱动相当于对端设备物理硬件在本地的代理;虚拟驱动实现和本地硬件驱动相同的HDI接口,区别在于,本地硬件驱动操作本地物理硬件,虚拟硬件驱动控制和数据传输通过软总线作用于对端分布式硬件。

由于和本地硬件实现同样的HDI接口,设备B相机和音频对应的虚拟硬件可以被相机服务和音频服务发现并管理,包括外设的查询,相机的预览拍照录像,音频的播放,声音的录制等功能。

对称的,在设备B上会执行同样的过程,为设备A相机和音频外设注册对应虚拟驱动,从而实现设备B上对设备A硬件外设的查询和使用。

如此就实现了外设信息在设备间互通共享,信息感知自动注册虚拟硬件,注册后即可用,成为一个无中心对称的分布式硬件外设管理系统。同时,分布式硬件框架定义了外设热插拔,虚拟硬件保活等机制,保证业务可靠性。在运行时,各个硬件外设的业务运行于独立进程中,在进程层面保证不同硬件的虚拟化业务互相隔离,提高了业务可靠性。

详细实现可以参考分布硬件管理框架源码:https://gitee.com/openharmony/distributedhardware_distributed_hardware_fwk

硬件资源池接入实践

4.1接口定义

通过前文分析,可以看到分布式硬件与南向硬件的交互涉及"硬件信息采集"和"驱动注册"两类业务,与此对应,分布式硬件针对南向硬件接入定义了两类接口。一类是硬件规格采集接口,一类是驱动注册与准备接口。

wKgZomVvKDSANz9mAAHDLSFkP1Y245.png

图6 分布式硬件资源池接入接口

(1)硬件规格采集接口

硬件规格采集接口定义了规格信息的采集以及外设热插拔事件监听等功能。

接口链接:https://gitee.com/openharmony/distributedhardware_distributed_hardware_fwk/blob/master/common/utils/include/ihardware_handler.h

(2)驱动注册与准备接口

由于我们是跨设备硬件调用,涉及双端设备的硬件,我们定义使用周边其他设备硬件外设的一端为Source端,共享本地硬件给其他设备调用的一端为Sink端。

驱动注册与准备接口包括Source和Sink两端。

Source端包括初始化,释放以及虚拟驱动注册/去注册等功能;Sink端主要是初始化和释放接口,用于响应Source端的控制指令,比如播放声音或者采集视频画面。在设备组网上线后,分布式硬件框架调用各个硬件类型的南向接口实现,分别初始化各类硬件的Source和Sink端业务进程,为后续的硬件跨设备调用做好准备。

Source端接口链接:https://gitee.com/openharmony/distributedhardware_distributed_hardware_fwk/blob/master/common/utils/include/idistributed_hardware_source.h

Sink端接口链接:https://gitee.com/openharmony/distributedhardware_distributed_hardware_fwk/blob/master/common/utils/include/idistributed_hardware_sink.h

4.2硬件接入实例

由于分布式硬件良好的南向接入解耦设计,如果有新硬件外设接入,只需要如下三步即可,以分布式相机配置为例。

Step1:定义硬件外设类型枚举值CAMERA。

enumclassDHType:uint32_t{
UNKNOWN=0x0,//unknowndevice
CAMERA=0x01,//Camera
AUDIO=0x02,//Mic
SCREEN=0x08,//Display
GPS=0x10,//GPS
INPUT=0x20,//Keyboard
MAX_DH=0x80000000
};
(左右滑动查看更多)

文件链接:https://gitee.com/openharmony/distributedhardware_distributed_hardware_fwk/blob/master/common/utils/include/device_type.h

Step2:实现分布式硬件框架定义的南向接入接口,分别实现为三个so。

1、实现分布式硬件框架定义的硬件规格采集接口IHardwareHandler,并编译获得接口实现libdistributed_camera_handler.z.so。

参考代码:https://gitee.com/openharmony/distributedhardware_distributed_camera/blob/master/services/cameraservice/cameraoperator/handler/include/dcamera_handler.h

2、实现Source侧接入接口IDistributedHardwareSource,并编译获得接口实现libdistributed_camera_source_sdk.z.so。

参考代码:https://gitee.com/openharmony/distributedhardware_distributed_camera/blob/master/interfaces/inner_kits/native_cpp/camera_source/include/dcamera_source_handler.h

3、实现Sink侧接入接口IDistributedHardwareSink,并编译获得接口实现libdistributed_camera_sink_sdk.z.so。

参考代码:

https://gitee.com/openharmony/distributedhardware_distributed_camera/blob/master/interfaces/inner_kits/native_cpp/camera_sink/include/dcamera_sink_handler.h

Step3:在分布式硬件子部件配置文件中,添加新硬件外设相关配置,包括外设类型,南向接口实现的so名称,版本号,以及Source和Sink端服务分配的服务Id。

该配置由产品定义确定,不同的产品可能使用不同的分布式能力。以RK3568开发板为例,配置如下:

{
"name":"distributed_camera",
"type":"CAMERA",
"comp_handler_loc":"libdistributed_camera_handler.z.so",
"comp_handler_version":"1.0",
"comp_source_loc":"libdistributed_camera_source_sdk.z.so",
"comp_source_version":"1.0",
"comp_source_sa_id":4803,
"comp_sink_loc":"libdistributed_camera_sink_sdk.z.so",
"comp_sink_version":"1.0",
"comp_sink_sa_id":4804
}

左右滑动查看更多)

配置链接:https://gitee.com/openharmony/device_board_hihope/blob/master/rk3568/distributedhardware/distributed_hardware_components_cfg.json

三个接口的so实现后,编译打包到系统库路径下,同时配置到分布式硬件部件配置文件中,设备组网上线后,可以看到分布式相机的dcamera进程已经成功启动,表明相机外设已经纳入资源池管理,成为分布式相机。

从下述截图也可以看到分布式硬件其他相关进程,dhardware就是分布式硬件资源池管理框架进程,顾名思义,dcamera是分布式相机进程,dinput是分布式键鼠输入进程,dscreen是分布式屏幕进程。

wKgZomVvKDSARBpJAAF4EIX1ys0175.png图7 分布式硬件相关进程

社区已开源分布式硬件代码仓

当前在OpenHarmony开源社区,已经开源了硬件资源池管理框架,分布式相机,分布式音频,分布式屏幕,分布式输入的代码仓,开放了相机,音频,屏幕和键鼠输入外设的跨设备控制源码,关于硬件资源池的详细实现,可以参考我们的开源代码仓。1、分布式硬件框架(distributedhardware_distributed_hardware_fwk)https://gitee.com/openharmony/distributedhardware_distributed_hardware_fwk

2、分布式相机(distributedhardware_distributed_camera)

https://gitee.com/openharmony/distributedhardware_distributed_camera

3、分布式音频(distributedhardware_distributed_audio)

https://gitee.com/openharmony/distributedhardware_distributed_audio

4、分布式屏幕(distributedhardware_distributed_screen)

https://gitee.com/openharmony/distributedhardware_distributed_screen

5、分布式输入(distributedhardware_distributed_input)

https://gitee.com/openharmony/distributedhardware_distributed_input

更多推荐

wKgZomVvKDSAcElAAADXrK0uGFA001.gif点击下方图片链接,查看更多栏目内容


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HarmonyOS
    +关注

    关注

    80

    文章

    2146

    浏览量

    35585

原文标题:【技术视界】分布式系统硬件资源池原理和接入实践

文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    分布式光伏环境监测站的技术架构与应用实践

    分布式光伏环境监测站的技术架构与应用实践 柏峰【BF-GFQX】一、系统技术架构解析 分布式光伏
    的头像 发表于 10-13 10:05 259次阅读
    <b class='flag-5'>分布式</b>光伏环境监测站的<b class='flag-5'>技术</b>架构与应用<b class='flag-5'>实践</b>

    【节能学院】Acrel-1000DP分布式光伏监控系统在奉贤平高食品 4.4MW 分布式光伏中应用

    摘要:在“双碳”和新型电力系统建设背景下,分布式光伏接入比例不断提高,对配电网电压、调度运行及调峰等环节造成强烈冲击。本文设计包含平台层、设备层二层架构体系的分布式光伏管控平台,以及小
    的头像 发表于 08-23 08:04 3306次阅读
    【节能学院】Acrel-1000DP<b class='flag-5'>分布式</b>光伏监控<b class='flag-5'>系统</b>在奉贤平高食品 4.4MW <b class='flag-5'>分布式</b>光伏中应用

    分布式光伏发电监测系统技术方案

    分布式光伏发电监测系统技术方案 柏峰【BF-GFQX】一、系统目标 :分布式光伏发电监测系统旨在
    的头像 发表于 08-22 10:51 2890次阅读
    <b class='flag-5'>分布式</b>光伏发电监测<b class='flag-5'>系统</b><b class='flag-5'>技术</b>方案

    分布式光储项目如何实现稳定收益?张家港案例揭示关键运营指标

    选择。 分布式光伏发电系统,又称分散发电或分布式供能,是指在用户现场或靠近用电现场配置较小的光伏发电供电系统,以满足特定用户的需求,支持现
    发表于 07-25 00:23

    分布式光伏监测难?并网型分布式光伏系统光伏功率预测方案

    一、分布式光伏发电系统   安科瑞 邹玉丽   分布式光伏发电系统的基本设备包括光伏电池组件、光伏方阵支架、直流汇流箱、直流配电柜、并网逆变器、交流配电柜等设备,另外还有供电
    的头像 发表于 05-20 10:17 883次阅读
    <b class='flag-5'>分布式</b>光伏监测难?并网型<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系统</b>光伏功率预测方案

    多通道电源管理芯片在分布式能源系统中的优化策略

    理、可靠性设计以及系统集成为主轴展开分析,为分布式能源系统效能提升提供坚实理论基石与创新实践路径。 关键词: 多通道电源管理芯片;分布式能源
    的头像 发表于 05-16 15:22 632次阅读

    兆芯+图云创智—可信分布式存储系统解决方案

    图云创智分布式存储系统采用全分布式设计与先进的存储虚拟化技术相结合,由多个独立的兆芯 x86 服务器作为存储节点,联合道熵存储软件和思赞博微可信计算
    的头像 发表于 04-23 10:29 656次阅读
    兆芯+图云创智—可信<b class='flag-5'>分布式</b>存储<b class='flag-5'>系统</b>解决方案

    抗干扰CAN总线通信技术分布式电力系统中的应用

    摘要 :随着分布式电力系统的广泛应用,其通信系统的可靠性与稳定性受到了前所未有的挑战。CAN总线通信技术以其卓越的抗干扰性能和可靠性,在众多通信技术
    的头像 发表于 04-14 18:24 711次阅读

    安科瑞Acrel-1000DP分布式光伏监控系统在嘉兴亨泰分布式光伏项目中的应用

    摘要 分布式光伏发电系统其核心特点是发电设备靠近用电负荷中心,通常安装在屋顶、建筑立面或闲置空地上,截至2025年,分布式光伏发电系统在全球和中国范围内取得了显著发展,成为能源转型和可
    的头像 发表于 04-10 13:17 632次阅读
    安科瑞Acrel-1000DP<b class='flag-5'>分布式</b>光伏监控<b class='flag-5'>系统</b>在嘉兴亨泰<b class='flag-5'>分布式</b>光伏项目中的应用

    分布式光伏发运维系统实际应用案例分享

    安科瑞刘鸿鹏 摘 要 分布式光伏发电系统其核心特点是发电设备靠近用电负荷中心,通常安装在屋顶、建筑立面或闲置空地上,截至2025年,分布式光伏发电系统在全球和中国范围内取得了显著发展,
    的头像 发表于 04-09 14:46 993次阅读
    <b class='flag-5'>分布式</b>光伏发运维<b class='flag-5'>系统</b>实际应用案例分享

    浅谈分布式光伏系统在工业企业的设计及应用

    主要对工业厂区屋顶分布式光伏发电系统的设计及应用进行研究,为工业厂区能源供应提供一种全新的解决思路和技术支持。介绍了工业厂区屋顶分布式光伏系统
    的头像 发表于 03-21 14:24 730次阅读
    浅谈<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系统</b>在工业企业的设计及应用

    分布式光伏系统在工业制造场景中的能源优化解决方案

    分布式光伏系统在节能减排、降低电力成本等方面表现出的积极效应,更进一步确认了其在工业制造领域的广泛应用价值。此项研究不仅向我们展示了分布式光伏系统在工业制造中的能源优化应用,也为我国在
    的头像 发表于 03-10 17:02 644次阅读
    <b class='flag-5'>分布式</b>光伏<b class='flag-5'>系统</b>在工业制造场景中的能源优化解决方案

    分布式云化数据库有哪些类型

    分布式云化数据库有哪些类型?分布式云化数据库主要类型包括:关系型分布式数据库、非关系型分布式数据库、新SQL分布式数据库、以列方式存储数据、
    的头像 发表于 01-15 09:43 879次阅读

    基于ptp的分布式系统设计

    在现代分布式系统中,精确的时间同步对于确保数据一致性、系统稳定性和性能至关重要。PTP(Precision Time Protocol)是一种网络协议,用于在分布式
    的头像 发表于 12-29 10:09 977次阅读

    安科瑞Acrel-1000DP分布式光伏监控系统在8.3MWp分布式光伏发电中的应用

    安科瑞分布式光伏监控系统在上海汽车变速器有限公司 8.3MWp分布式光伏发电项目中的应用
    发表于 12-16 15:03 0次下载