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

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

3天内不再提示

通过vmRT-Thread和VirtIO-SCMI攻克硬件分割依赖难点 | 前沿观点

RT-Thread官方账号 2025-06-24 19:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

硬件分割依赖难点是现代嵌入式系统物联网设备开发中常见的问题。在多任务或多应用的系统中,不同任务或应用需要访问不同的硬件资源,传统的系统设计中,硬件资源的分配往往与软件紧密耦合,导致软件的可移植性和可扩展性受限。同时,硬件资源的共享访问可能导致资源竞争和冲突,进而影响系统的稳定性和安全性。特别是在安全关键的应用场景(如汽车电子工业控制等)中,这种问题尤为突出。


RT-Thread睿赛德通过vmRT-Thread和VirtIO-SCMI的方式,提供一种攻克硬件分割依赖难点的思路,希望对大家有所帮助,也欢迎大家在留言中或者扫码小睿助手继续交流。


嵌入式虚拟化环境中,外设硬分割(Partition/Passthrough)是充分发挥虚拟化硬件性能的重要手段。然而早期实现中,操作系统存在以下难题:

驱动需求繁复:虚拟机操作系统本身需要移植大量驱动,此类驱动本身较复杂。

虚拟机行为不可控:存在多个虚拟机依赖同一个外设的情况,由于无法保证多个虚拟机并发访问同一个物理资源为原子操作,行为不可控易导致不安全。

耦合严重且缺乏标准:可移植性差,固件更新困难;多操作系统(OS)/虚拟化下资源控制混乱,无法实现高级功耗与性能策略协同。


为解决上述问题,本文将介绍一种基于SCMI协议实现的依赖资源共享的虚拟化框架(VirtIO-SCMI),其架构如下图所示:

bac9b5e8-50ef-11f0-986f-92fbcf53809c.png

在vmRT-Thread中,普通虚拟机作为VirtIO-SCMI前端,仅转发硬件操作请求;驱动虚拟机作为后端,解析请求并校验权限后,通过procfs/ioctl操作真实硬件,两者均通过VirtIO通道通信

同时,VirtIO-SCMI目前存在部分限制与要求:前端虚拟机需要选择合适的内核版本,后端虚拟机需要提供操作真实的硬件的procfs或者ioctl接口,并确保并发访问的原子性。

基于上述情况,vmRT-Thread可进行如下具体操作:

示例1

将VirtIO-SCMI前端虚拟机中某个uart中的clk,reset,pinctrl替换为VirtIO-SCMI。

大致步骤如下:

  1. VirtIO-SCMI前端虚拟机需要修改设备树:
  • 首先需要增加scmi的clk,reset,pinctrl的子协议设备树节点

firmware {scmi {compatible ="arm,scmi-virtio";#address-cells = <0x01>;#size-cells = <0x00>;scmi_clk: protocol@14 {reg = <0x14>;#clock-cells = <1>;};scmi_reset: protocol@16 {reg = <0x16>;#reset-cells = <1>;};scmi_pinctrl: protocol@19 {reg = <0x19>;uartA_0_pins: uartA_pins@0 {groups ="X","Y";function ="1_uartA";bias-pull-up;drive-strength = <10>;};uartB_1_pins: uartB_pins@1 {groups ="M","N";function ="1_gpio_in";};};};};

  • 然后对应串口的设备树节点,需要引用scmi的clk,reset,pinctrl的子协议设备树节点,其中clk,reset还需要通过参数来提供索引号。

uart@xxxxxx {clocks = <&scmi_clk U>;resets = <&scmi_reset V>;pinctrl-0 = <&uartA_0_pins>;pinctrl-1 = <&uartB_1_pins>;status ="okay";};

  1. VirtIO-SCMI后端虚拟机需要修改VirtIO-SCMI Backend Service的配置文件,配置文件主要包含硬件的描述信息,索引关系,以及权限等等。
  2. VirtIO-SCMI后端虚拟机启动VirtIO-SCMI Backend Service,然后再启动VirtIO-SCMI前端虚拟机,可以看到VirtIO-SCMI前端虚拟机的串口可以正常工作。

示例2

将VirtIO-SCMI前端虚拟机中某些CPU的频率替换为VirtIO-SCMI。

大致步骤如下:

  1. VirtIO-SCMI前端虚拟机需要修改设备树:
  • 首先需要增加scmi的perf的子协议设备树节点

firmware {scmi {compatible ="arm,scmi-virtio";#address-cells = <0x01>;#size-cells = <0x00>;scmi_perf: protocol@13 {reg = <0x13>;phandle = <0x04>;};};};

  • 然后对应CPU的设备树节点中的频率属性需要引用scmiperf子协议设备树节点,同时还需要通过参数来提供索引号。

cpus {cpu@0 {clocks = <&scmi_perf C>;};};

  1. VirtIO-SCMI后端虚拟机需要VirtIO-SCMI Backend Service的配置文件,配置文件主要包含硬件的描述信息,索引关系,以及权限等等。
  2. VirtIO-SCMI后端虚拟机启动VirtIO-SCMI Backend Service,然后再启动VirtIO-SCMI前端虚拟机。
  3. VirtIO-SCMI前端虚拟机首先配置CPU0频率为固定频率408MHZ,然后通过coremak测试跑分效果;然后再配置CPU0频率为固定频率2.4GHZ,然后通过coremak测试跑分效果;进行对比,对比之后可以看到CPU固定频率提升之后,跑分测试分数从3011.594639提升到17049.329393,符合预期。
baea8a98-50ef-11f0-986f-92fbcf53809c.png

效果图1

bb107316-50ef-11f0-986f-92fbcf53809c.png

效果图2

该方法基于VirtIO-SCMI的嵌入式虚拟化解决方案,通过将硬件资源访问虚拟化,使前端虚拟机只需通过VirtIO-SCMI协议转发请求,而后端驱动虚拟机通过procfs/ioctl统一处理真实硬件操作,既实现了多虚拟机间的资源隔离与安全管控,又避免了重复移植clock/power等驱动,为车载、物联网等需要严格外设隔离的场景提供新路径。

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

    关注

    41

    文章

    3695

    浏览量

    131884
  • 硬件
    +关注

    关注

    11

    文章

    3507

    浏览量

    67853
  • RT-Thread
    +关注

    关注

    32

    文章

    1453

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RT-Thread嵌入式电子设计大赛直播周今晚正式开启!立即预约 | 问学直播

    ,RT-Thread本周将进行大赛直播周活动。我们邀请了社区开发者,通过直播分享他们基于这些硬件平台的开发经验、项目成果,并提供一些赛事设计思路。希望通过直播周,让大家能够更
    的头像 发表于 08-25 11:52 179次阅读
    RT-<b class='flag-5'>Thread</b>嵌入式电子设计大赛直播周今晚正式开启!立即预约 | 问学直播

    通过 vmRT-Thread 和共享显示支持汽车座舱开发 | 前沿观点

    在嵌入式虚拟化环境中,显示模块往往是抢手而又珍贵的资源,也因此SoC厂商往往为了性能和成本,显示器模块很少会实现成可硬件分区的方式,而虚拟机往往需要多个显示功能以应对不同专业的场景,同时还要面临以下
    的头像 发表于 07-09 19:03 1357次阅读
    <b class='flag-5'>通过</b> <b class='flag-5'>vmRT-Thread</b> 和共享显示支持汽车座舱开发 | <b class='flag-5'>前沿</b><b class='flag-5'>观点</b>

    通过vmRT-Thread和vSOME/IP支持车载SOA开发 | 前沿观点

    随着智能网联汽车的发展,电子电气架构正从传统的分布式架构向域集中甚至中央集中式架构演进。在这一趋势下,多个原本部署在独立ECU上的功能逐步整合至同一计算平台,集中式架构当前面临以下需求:Hypervisor轻量化、高性能:要求对内存和存储资源更少,有更高的实时性要求。车载系统通信兼容:现有车载应用大多基于分布式架构设计,直接迁移到虚拟化平台需要兼容原有协议栈
    的头像 发表于 07-08 09:46 1612次阅读
    <b class='flag-5'>通过</b><b class='flag-5'>vmRT-Thread</b>和vSOME/IP支持车载SOA开发 | <b class='flag-5'>前沿</b><b class='flag-5'>观点</b>

    凡亿Allegro Skill布线功能-检查跨分割

    能会导致设计中的缺陷和问题。为了克服这一挑战,可以利用凡亿skill中的“检查跨分割”命令。这个工具能够帮助设计者快速而准确地识别出高速信号参考平面的跨分割问题,从而避免了人工检查时可能出现的疏漏。通过使用这种自动化
    的头像 发表于 06-19 11:50 1415次阅读
    凡亿Allegro Skill布线功能-检查跨<b class='flag-5'>分割</b>

    通过vmRT-Thread和ROS2赋能机器人智能开发

    随着机器人技术的快速迭代升级,协作机器人、复合移动机器人和人形机器人等新兴应用场景对实时控制与智能决策的深度融合提出了迫切需求。然而,当前机器人操作系统架构面临以下关键挑战:算力瓶颈制约智能化发展:传统控制系统算力不足,难以有效支撑语音识别、手势交互、动态避障、力控优化、地图构建、位姿计算等智能化需求。系统集成复杂度高:传统方案采用多主机分布式架构,导致系统
    的头像 发表于 06-09 09:23 997次阅读
    <b class='flag-5'>通过</b><b class='flag-5'>vmRT-Thread</b>和ROS2赋能机器人智能开发

    Thread认证

    Thread是一种基于IPv6标准的mesh网络协议,没有单点故障。Thread的目标是通过可靠、安全、可扩展的方式来连接低功耗设备。和互联网一样,Thread运行在互联网协议(IP)
    发表于 05-27 22:50

    RT-Thread睿赛德亮相深圳机器人产业大会,聚焦机器人软件系统技术前沿 | 新闻速递

    近日,由开源中国社区主办的"未来智造:机器人软件系统技术前沿"源创会在深圳会展中心成功举办。会议聚焦机器人软件系统前沿技术,吸引了150余位行业专家与技术开发者参与交流
    的头像 发表于 05-20 18:15 617次阅读
    RT-<b class='flag-5'>Thread</b>睿赛德亮相深圳机器人产业大会,聚焦机器人软件系统技术<b class='flag-5'>前沿</b> | 新闻速递

    通过vmRT-Thread和MCP赋能具身智能开发

    ,而运动控制仍依赖分离式MCU,通信链路长、时延大。通信方式低效:传统使用串口、网络Socket或CAN等方式连接Linux与MCU,不仅通信开销大,且存在不稳定
    的头像 发表于 05-09 12:05 598次阅读
    <b class='flag-5'>通过</b><b class='flag-5'>vmRT-Thread</b>和MCP赋能具身智能开发

    乐鑫 ESP32-C6 通过 Thread 1.4 互操作性认证

    乐鑫信息科技(688018.SH)很高兴地宣布,ESP32-C6已经成功通过Thread1.4互操作性认证。这一成就标志着乐鑫在提供先进物联网解决方案之路上又迈进了重要一步。ESP32-C6在
    的头像 发表于 02-06 18:02 596次阅读
    乐鑫 ESP32-C6 <b class='flag-5'>通过</b> <b class='flag-5'>Thread</b> 1.4 互操作性认证

    2024年Thread的重要亮点

    Thread Group近期通过本篇博文来总结2024年取得的惊人进步和成就。目前,Thread会员基础已近 200 家公司,从去年1月份参加CES 2024,到7月份庆祝成立 10 周年,再到
    的头像 发表于 01-14 09:30 796次阅读

    eBPF技术实践之virtio-net网卡队列可观测

    在系统领域中,最具挑战性的问题通常是组件之间的边界定位。其中,virtio-net前后端的定界尤为困难。当网络报文从内核发送到virtio-net后端,或者从virtio-net后端发送到内核
    的头像 发表于 11-14 11:18 846次阅读
    eBPF技术实践之<b class='flag-5'>virtio</b>-net网卡队列可观测

    浅谈分割接地层的利弊

    如果分割接地层并且线路穿过分割线(如图1所示)那么电流返回通路在哪里呢?假设两个层在某处连接(通过在一个单独点),则返回电流必在该大型环路内流动。大型环路内的高频电流产生辐射和高接地电感。大型环路内的低电平模拟电流易受干扰的影响
    的头像 发表于 10-30 10:09 737次阅读
    浅谈<b class='flag-5'>分割</b>接地层的利弊

    画面分割器怎么调试

    画面分割器,通常指的是视频画面分割器,它是一种可以将一个视频信号分割成多个小画面的设备。这种设备广泛应用于监控系统、视频会议、多画面显示等场景。调试画面分割器是一个技术性很强的工作,需
    的头像 发表于 10-17 09:32 1267次阅读

    画面分割器怎么连接

    器的基本原理 画面分割器的工作原理是通过数字信号处理技术,将多个视频信号源(如摄像头、DVR等)的图像数据进行处理,然后在一个监视器上以分割的形式显示出来。这些分割可以是1画面、4画面
    的头像 发表于 10-17 09:29 1161次阅读

    画面分割器和分屏器有什么区别

    : 技术实现: 画面分割器: 画面分割器是一种硬件设备,它通过硬件电路实现对多个视频信号的合并。画面分割器通常包含一个或多个视频输入端口,用
    的头像 发表于 10-17 09:25 2468次阅读