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

    文章

    3818

    浏览量

    133869
  • 硬件
    +关注

    关注

    12

    文章

    3628

    浏览量

    69165
  • RT-Thread
    +关注

    关注

    32

    文章

    1636

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    11万转高压吹风机FOC驱动难点刨析

    驱动前言:经过10个月的软硬件打磨,我们攻克了11万转高速吹风筒目前行业内的技术软硬件难点。本文本文详细分享11万转高速吹风筒开发过程中遇到的问题,及如何解决,并总结分享给大家,希望对
    的头像 发表于 04-08 09:20 153次阅读
    11万转高压吹风机FOC驱动<b class='flag-5'>难点</b>刨析

    首搭RT-Thread程翧车控平台| RT-Thread程翧 S32K344 快速原型开发平台正式上市!| 产品动态

    在智能汽车迈向高集成与高安全的时代,VCU/ECU开发正面临效率与可靠性的双重考验。依赖单一硬件或拼凑软件方案的传统模式,已成为制约创新的瓶颈。为此,RT-Thread带来里程碑式的解决方案
    的头像 发表于 10-31 11:53 1257次阅读
    首搭RT-<b class='flag-5'>Thread</b>程翧车控平台| RT-<b class='flag-5'>Thread</b>程翧 S32K344 快速原型开发平台正式上市!| 产品动态

    临港汽车软件之家第二期技术沙龙:生态聚能,汽车产业链协同创新|前沿观点

    临港汽车软件之家第二期技术沙龙:生态聚能,汽车产业链协同创新|前沿观点
    的头像 发表于 09-22 21:25 825次阅读
    临港汽车软件之家第二期技术沙龙:生态聚能,汽车产业链协同创新|<b class='flag-5'>前沿</b><b class='flag-5'>观点</b>

    RT-Thread 2025硬件拓展板设计大赛火热征集中

    为激发开发者潜能、推动硬件创新,RT-Thread正式启动2025年度硬件拓展板设计大赛!本赛道为硬件拓展板设计大赛,专注于硬件设计与系统拓
    的头像 发表于 09-21 10:06 1372次阅读
    RT-<b class='flag-5'>Thread</b> 2025<b class='flag-5'>硬件</b>拓展板设计大赛火热征集中

    手机板 layout 走线跨分割问题

    初学习layout时,都在说信号线不可跨分割,但是在工作中为了成本不能跨分割似乎也非绝对。 在后续工作中,跨分割的基础都是相邻层有一面完整的GND参考,跨分割发生在相邻的另外一层。 但
    发表于 09-16 14:56

    使用env v2.0执行scons --dist产生缺失依赖报错怎么解决?

    使用env v2.0版本的工具到rt-thread &gt; v5.1.0版本的bsp中使用scons指令,会出现缺失packages依赖的报错,并提示更新pkgs,但是更新也会产生
    发表于 09-11 08:28

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

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

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

    在嵌入式虚拟化环境中,显示模块往往是抢手而又珍贵的资源,也因此SoC厂商往往为了性能和成本,显示器模块很少会实现成可硬件分区的方式,而虚拟机往往需要多个显示功能以应对不同专业的场景,同时还要面临以下
    的头像 发表于 07-09 19:03 1990次阅读
    <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 2578次阅读
    <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>

    国际首创新突破!中国团队以存算一体排序架构攻克智能硬件加速难题

    2025 年 6 月 25 日,北京大学团队在智能计算硬件方面取得领先突破,国际上首次实现了基于存算一体技术的高效排序硬件架构 (A fast and reconfigurable
    的头像 发表于 07-02 16:50 977次阅读
    国际首创新突破!中国团队以存算一体排序架构<b class='flag-5'>攻克</b>智能<b class='flag-5'>硬件</b>加速难题

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

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

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

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

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

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