Embedded SIG | 分布式软总线

openEuler在嵌入式领域引入了OpenHarmony的分布式软总线技术,旨在实现设备间的无感发现和高效传输。软总线架构包括发现、组网、连接和传输模块,支持以太网通信并可扩展至WIFI、蓝牙等。本文介绍了软总线的部署、API使用和QEMU上的应用示例,展示了如何在多设备间实现通信。目前仅支持局域网下的coap发现,未来将逐步支持更多功能。

openEuler Embedded SIG | 分布式软总线

特性介绍

背景

openEuler秉承着打造“数字化基础设施操作系统”的愿景,为促进与OpenHarmony生态的合作与互通,实现端边领域的互通和协同,首次在嵌入式领域引入分布式软总线技术。

分布式软总线是OpenHarmony社区开源的分布式设备通信基座,为设备之间的互通互联提供统一的分布式协同能力,实现设备无感发现和高效传输。

OpenHarmony主要面向强交互等需求的智能终端、物联网终端和工业终端。openEuler主要面向有高可靠、高性能等需求的服务器、边缘计算、云和嵌入式设备,二者各有侧重。通过以分布式软总线为代表的技术进行生态互通,以期实现“1+1>2”的效果,支撑社区用户开拓更广阔的行业空间。

架构

软总线的主要架构如下:

在这里插入图片描述

软总线主体功能分为发现、组网、连接和传输四个基本模块,实现:

  • 即插即用:快速便捷发现周边设备。
  • 自由流转:各设备间自组网,任意建立业务连接,实现自由通信。
  • 高效传输:通过WIFI、蓝牙设备下软硬件协同最大化发挥硬件传输性能。

软总线南向支持标准以太网通信,同时后续可持续拓展WIFI、蓝牙等多种通信方式。并为北向的分布式应用提供统一的API接口,屏蔽底层通信机制。

软总线依赖于设备认证、IPC、日志和系统参数(SN号)等周边模块,嵌入式系统中将这些依赖模块进行了样板性质的替换,以实现软总线基本功能。实际的周边模块功能实现,还需要用户根据实际业务场景进行丰富和替换,以拓展软总线能力。

应用指南

部署示意

软总线支持局域网内多设备部署,设备间通过以太网通信。单设备上分为server和client,二者通过IPC模块进行交互。

在这里插入图片描述

注意

当前IPC模块和SN号等系统参数,嵌入式版本提供的仅为参考模板,还无法支持多节点和多client部署。用户可根据实际业务场景进行IPC模块和SN号系统参数进行功能丰富,以拓展软总线部署能力。

服务端启动

服务端主程序为softbus_server_main,执行该主程序既可拉起软总线服务端。

openeuler ~ # softbus_server_main >log.file &

当服务端被拉起时,会主动通过名为ethX的网络设备进行coap广播,若探测到对端设备存在则会启动自组网。

客户端API

头文件在sdk和initrd中均存放在/usr/include/dsoftbus/下,其中:

  1. discovery_service.h:发现模块头文件,支持应用主动探测和发布的API如下:

    API 功能
    PublishService 发布特定服务能力
    UnPublishService 取消发布特定服务能力
    StartDiscovery 订阅/探测特定服务能力
    StopDiscovery 取消订阅特性服务能力

    其中服务能力通过g\_capabilityMap数组定义,用户若新增能力需要自定义修改该数组,并重新编译软总线服务端和客户端程序来生效。

  2. softbus_bus_center.h:组网模块头文件,支持获取组网内设备信息API如下:

    API 功能
    GetAllNodeDeviceInfo 获取当前组网内所有节点信息
  3. session.h:连接/传输模块头文件,支持创建session和数据传输API如下:

    API 功能
    CreateSessionServer 创建session服务端
    RemoveSessionServer 移除session服务端
    OpenSession 创建到对端的传输连接(同时依赖于本端和对端提前创建的SessionServer)
    CloseSession 断开传输连接
    SendBytes 根据建好的连接ID,进行数据传输。

各API参数详见头文件描述。

应用示例

使用QEMU部署分布式软总线,编写客户端程序,使其能够列出所有发现的设备信息。

  1. 编写客户端程序

    编写客户端程序依托于Embedded版本发布的SDK,按如下步骤进行SDK环境使用准备。

    1. 安装SDK

      执行SDK自解压安装脚本

      sh openeuler-glibc-x86_64-openeuler-image-aarch64-qemu-aarch64-toolchain-22.03.sh
      

      根据提示输入工具链的安装路径,默认路径是/opt/openeuler/<openeuler version>/;若不设置,则按默认路径安装;也可以配置相对路径或绝对路径。

      举例如下:

      sh ./openeuler-glibc-x86_64-openeuler-image-armv7a-qemu-arm-toolchain-22.03.sh``
      openEuler embedded(openEuler Embedded Reference Distro) SDK installer version 22.03
      ==
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

openEuler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值