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
    +关注

    关注

    79

    文章

    1967

    浏览量

    29997

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

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

收藏 人收藏

    评论

    相关推荐

    分布式光伏发电系统的应用

    分布式光伏发电系统现状  Q/GDW1480-2015 《分布式电源接入电网技术规定》:分布式
    的头像 发表于 11-21 16:31 80次阅读
    <b class='flag-5'>分布式</b>光伏发电<b class='flag-5'>系统</b>的应用

    分布式通信的原理和实现高效分布式通信背后的技术NVLink的演进

    大型模型的大小已经超出了单个 GPU 的范围。所以就需要实现跨多个 GPU 的模型训练,这种训练方式就涉及到了分布式通信和 NVLink。 当谈及分布式通信和 NVLink 时,我们进入了一个引人入胜且不断演进的技术领域,下面我
    的头像 发表于 11-18 09:39 203次阅读
    <b class='flag-5'>分布式</b>通信的原理和实现高效<b class='flag-5'>分布式</b>通信背后的<b class='flag-5'>技术</b>NVLink的演进

    浅谈屋顶分布式光伏发电技术的设计与应用

    【摘要】为了缓解城市用电紧张袁降低人们的用电成本,可以在工业园区、办公楼屋顶等场所应用屋顶分布式光伏发电技术进行就近转换、并网发电袁充分利用建筑物屋顶的太阳资源。概述屋顶分布式光伏发电
    的头像 发表于 11-11 15:10 276次阅读
    浅谈屋顶<b class='flag-5'>分布式</b>光伏发电<b class='flag-5'>技术</b>的设计与应用

    安科瑞分布式光伏系统在某重工企业18MW分布式光伏中应用

    ,江苏省分布式光伏有2228万千瓦新增接入空间! 表:江苏省分布式光伏接入能力规划 根据国家能源局统计数据,截止2023年底,江苏省分布式
    的头像 发表于 07-19 11:30 475次阅读
    安科瑞<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系统</b>在某重工企业18MW<b class='flag-5'>分布式</b>光伏中应用

    分布式光伏接入导致农村台区电压越限,CET中电技术如何解决?

    分布式光伏的接入也容易导致农村台区整体电压越限,引发经常性的电压故障报警,影响着供配电系统的安全稳定运行。对此,CET中电技术推出CET农村台区电压治理解决方案,方
    的头像 发表于 06-21 08:35 854次阅读
    因<b class='flag-5'>分布式</b>光伏<b class='flag-5'>接入</b>导致农村台区电压越限,CET中电<b class='flag-5'>技术</b>如何解决?

    基于分布式运维管理平台的智慧城市运维实践

    基于分布式运维管理平台的智慧城市运维实践是一个涉及多个层面和维度的复杂过程。下面将从几个关键方面对其实践进行概述: 首先,智慧城市运维的核心在于实现对城市各个系统和服务的全面感知、智能
    的头像 发表于 03-26 16:12 475次阅读

    分布式综合管理平台在公共安全领域的成功实践

    的成功实践。 讯维分布式综合管理平台通过集成各类公共安全相关的视频监控、报警系统、应急通信等资源,实现了对公共安全事件的全面监控和快速响应。在多个城市的公共安全
    的头像 发表于 03-18 16:13 311次阅读

    分布式锁的三种实现方式

    分布式锁的三种实现方式  分布式锁是在分布式系统中用于实现对共享资源进行访问控制的一种机制。分布式
    的头像 发表于 12-28 10:01 851次阅读

    HarmonyOS NEXT分布式系统硬件资源应用场景技术原理及接入实践

    随着智能设备的发展和普及,越来越多的智能设备已经深入人们的生活,比如手机,PC,平板,各类穿戴设备等。目前单个设备的外设资源已经非常丰富,硬件能力也很强大。但像是手机、PC、平板等设备都有的相机
    的头像 发表于 12-13 17:25 458次阅读

    分布式系统硬件资源原理和接入实践

    把各个设备的硬件外设抽象为外设信息单元,外设信息在各个可信设备之间自动同步,如此,实现了外设信息的全局可见;结合分布式硬件虚拟化技术,实现任意设备之间的
    发表于 12-06 10:02

    redis分布式锁的缺点

    Redis分布式锁是一种常见的用于解决分布式系统资源争用问题的解决方案。尽管Redis分布式锁具有很多优点,但它也存在一些缺点。本文将从几
    的头像 发表于 12-04 14:05 1194次阅读

    浅析Redis 分布式锁解决方案

    Redis 分布式锁解决方案是一种基于Redis实现的分布式锁机制,可以确保在分布式环境中对共享资源的访问进行同步控制,避免出现竞态条件和数据不一致的问题。在
    的头像 发表于 12-04 14:00 461次阅读

    如何实现Redis分布式

    Redis是一个开源的内存数据存储系统,可用于高速读写操作。在分布式系统中,为了保证数据的一致性和避免竞态条件,常常需要使用分布式锁来对共享资源
    的头像 发表于 12-04 11:24 658次阅读

    redis分布式锁的应用场景有哪些

    Redis分布式锁是一种基于Redis实现的分布式锁机制,可以在分布式环境下确保资源的独占性,避免并发访问时的数据争用问题。下面将详细介绍Redis
    的头像 发表于 12-04 11:21 1388次阅读

    分布式通信是什么 分布式网络搭建

    智能机器人的功能繁多,全都放在一个计算机里,经常会遇到计算能力不够、处理出现卡顿等情况,如果可以将这些任务拆解,分配到多个计算机中运行岂不是可以减轻压力? 这就是分布式系统,可以实现多计算平台
    的头像 发表于 11-27 15:49 737次阅读
    <b class='flag-5'>分布式</b>通信是什么 <b class='flag-5'>分布式</b>网络搭建