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

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

3天内不再提示

技术解析 | 睿擎平台AMP虚拟网卡:突破双系统通信瓶颈的创新方案

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

扫码添加小助手

加入工程师交流群

在工业物联网和边缘计算领域,多操作系统协同工作已成为一种重要趋势。然而,不同操作系统之间的高效通信一直是开发者面临的技术挑战。睿擎平台重磅发布的AMP虚拟网卡技术,为LinuxRT-Thread双系统通信提供了一套优雅而高效的解决方案。今天,我们就来深入解析这项技术的工作原理和应用价值。

一、为什么需要双系统通信?

在复杂的工业应用场景中,单一操作系统往往难以满足多样化的需求:

实时性要求工业控制任务需要微秒级的实时响应,这是Linux等通用操作系统难以保证的

丰富功能需求:复杂的人机交互、数据分析、网络协议支持等需要功能丰富的操作系统

资源利用优化:不同任务对CPU、内存等资源的需求不同,合理分配资源可以提高系统整体性能

404dafca-f6b9-11f0-8ce9-92fbcf53809c.png

基于这些需求,睿擎派工业开发板采用了Linux+RT-Thread AMP(非对称多处理)混合部署架构,将实时控制任务放在RT-Thread上执行,将复杂的应用功能放在Linux上运行。这种架构结合了两个系统的优势,但也带来了一个关键问题:如何实现两个系统之间的高效通信?


二、AMP虚拟网卡技术:原理与创新

传统的双系统通信方案主要包括:

1.共享内存:通过预留一块物理内存区域实现数据交换,但需要自行处理同步和锁机制

2.串口通信:使用UART作为通信桥梁,但速率低,难以满足大量数据传输需求

3.专用硬件接口:如PCIe、USB等,但实现复杂且成本较高

睿擎平台推出的AMP虚拟网卡技术,创新性地将网络通信模型引入双系统通信中,为开发者提供了一种熟悉且高效的解决方案。

1. 技术原理

AMP虚拟网卡技术的核心思想是:在Linux和RT-Thread两个系统之间创建一个虚拟的网络通道,让两个系统可以像通过物理网卡一样进行网络通信。

具体实现包括以下几个关键部分:

虚拟网卡驱动:在RT-Thread系统中实现了一套完整的虚拟网卡驱动,使其能够像物理网卡一样工作

核间通信机制:底层利用高性能的核间通信机制(如rpmsg)实现数据传输

网络协议栈适配:无缝对接两个系统的TCP/IP协议栈,支持标准的Socket API

2. 性能优势

AMP虚拟网卡技术相比传统方案具有显著的性能优势:

高带宽:测试数据显示,Linux侧给RT-Thread打流可达185Mbps,RT-Thread侧给Linux系统打流可达76Mbps

低延迟:由于基于内存的直接数据交换,通信延迟远低于传统的物理接口

开发便捷:开发者可以使用熟悉的Socket API进行编程,无需学习新的通信协议

灵活性高:支持TCP、UDP等多种网络协议,可以适应不同的通信需求


三、AMP虚拟网卡的应用场景

AMP虚拟网卡技术为多种工业应用场景提供了理想的通信解决方案:

1. 实时控制与数据处理协同

在工业控制系统中,RT-Thread负责实时控制任务(如电机控制传感器数据采集),而Linux负责复杂的数据处理、分析和可视化。通过AMP虚拟网卡,实时控制系统可以将采集的数据快速传输给Linux进行深度分析和展示。

2. 双系统资源共享

通过AMP虚拟网卡,可以实现两个系统之间的资源共享:

●RT-Thread系统可以通过Linux连接到互联网,获取远程控制指令和更新

●两个系统可以共享网络连接,节省硬件资源

●两个系统可以基于虚拟网卡,挂载NFS文件系统,方便的进行文件传输

AMP虚拟网卡支持完整的网络协议,包括NFS(网络文件系统),这使得两个系统可以共享文件资源:

406d2a76-f6b9-11f0-8ce9-92fbcf53809c.png

40845124-f6b9-11f0-8ce9-92fbcf53809c.png

3. 系统功能扩展

当单一系统的功能无法满足需求时,可以通过AMP虚拟网卡将功能分散到两个系统:

在Linux上运行复杂的AI算法,处理来自RT-Thread的实时数据

在RT-Thread上运行实时控制程序,接收来自Linux的高级控制指令

实现功能模块化设计,提高系统的可维护性和扩展性


四、如何在睿擎派上使用AMP虚拟网卡

睿擎平台已经默认集成了AMP虚拟网卡功能,开发者可以按照以下步骤快速使用:

1. 检查虚拟网卡

在RT-Thread系统中,可以使用ifconfig命令查看网络接口,确认虚拟网卡已正确加载:

40996302-f6b9-11f0-8ce9-92fbcf53809c.png

之前版本名称不是veth,可能e0或者e1。

在Linux系统中,可以使用同样的命令查看虚拟网卡:

40b10318-f6b9-11f0-8ce9-92fbcf53809c.png

2. 配置IP地址

确保RT-Thread和Linux的虚拟网卡在同一网段:

●RT-Thread虚拟网卡IP:192.168.100.101

●Linux虚拟网卡IP:192.168.100.100

3. 使用Socket API进行通信

在两个系统中,可以使用标准的Socket API进行通信,无需特殊的API调用:

RT-Thread端示例代码(TCP客户端)

#include<rtthread.h>
#include
#include
#include
#include

#defineSERVER_IP "192.168.10.2" // Linux虚拟网卡IP
#definePORT 5000

voidtcp_client(void)
{
intsock=socket(AF_INET,SOCK_STREAM,0);
structsockaddr_inserver_addr;
char*send_data="Hello from RT-Thread!";
charrecv_buf[1024];

// 设置服务器地址
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(PORT);
server_addr.sin_addr.s_addr=inet_addr(SERVER_IP);

// 连接服务器
connect(sock,(structsockaddr*)&server_addr,sizeof(server_addr));

// 发送数据
send(sock,send_data,strlen(send_data),0);

// 接收数据
recv(sock,recv_buf,sizeof(recv_buf)-1,0);
rt_kprintf("Received: %s\n",recv_buf);

// 关闭连接
closesocket(sock);
}


Linux端示例代码(TCP服务器)

#include


#include
#include
#include
#include
#include

#definePORT 5000
#defineBUFFER_SIZE 1024

intmain()
{
intserver_fd,new_socket;
structsockaddr_inaddress;
intopt=1;
intaddrlen=sizeof(address);
charbuffer[BUFFER_SIZE]={0};
char*hello="Hello from Linux!";

// 创建socket文件描述符
if((server_fd=socket(AF_INET,SOCK_STREAM,0))==0)
{
perror("socket failed");
exit(EXIT_FAILURE);
}

// 设置socket选项
if(setsockopt(server_fd,SOL_SOCKET,SO_REUSEADDR|SO_REUSEPORT,&opt,sizeof(opt)))
{
perror("setsockopt");
exit(EXIT_FAILURE);
}

// 绑定地址和端口
address.sin_family=AF_INET;
address.sin_addr.s_addr=INADDR_ANY;
address.sin_port=htons(PORT);

if(bind(server_fd,(structsockaddr*)&address,sizeof(address))<0)
{
perror("bind failed");
exit(EXIT_FAILURE);
}

// 监听连接请求
if(listen(server_fd,3)<0)
{
perror("listen");
exit(EXIT_FAILURE);
}

// 接受连接
if((new_socket=accept(server_fd,(structsockaddr*)&address,(socklen_t*)&addrlen))<0)
{
perror("accept");
exit(EXIT_FAILURE);
}

// 接收数据
read(new_socket,buffer,BUFFER_SIZE);
printf("%s\n",buffer);

// 发送数据
send(new_socket,hello,strlen(hello),0);
printf("Hello message sent\n");

return0;
}



五、性能测试

睿擎平台提供了完整的性能测试数据,验证了AMP虚拟网卡的高性能。我们使用iperf工具进行了带宽测试:

Linux端作为服务器

40c7e5c4-f6b9-11f0-8ce9-92fbcf53809c.png

RT-Thread端作为客户端

40df47c8-f6b9-11f0-8ce9-92fbcf53809c.png

测试结果显示:Linux与RT-Thread之间虚拟网络通信,最高可达185Mbps,这种性能表现足以满足大多数工业应用场景的需求。


六、结语

睿擎平台的AMP虚拟网卡技术,为Linux和RT-Thread双系统通信提供了一种创新而实用的解决方案。它不仅性能优异,而且使用简单,为开发者构建复杂的工业应用提供了有力支持。

通过这项技术,开发者可以充分发挥双系统架构的优势,将实时控制和复杂应用完美结合,为工业自动化、物联网等领域的创新应用奠定了坚实基础。

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

    关注

    18

    文章

    6457

    浏览量

    140278
  • 操作系统
    +关注

    关注

    37

    文章

    7443

    浏览量

    129635
  • Amp
    Amp
    +关注

    关注

    0

    文章

    102

    浏览量

    48653
  • 虚拟网卡
    +关注

    关注

    0

    文章

    9

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SDK V1.5.0重磅升级:EtherCAT低抖动,AMP虚拟网卡,LVGL硬件加速,多核调试等性能大幅提升|产品动态

    )。AMP模式下虚拟网卡驱动支持,双系统通信更加便利,更完善的Perfetto多核性能调试工具,AIUVC人脸识别示例,优化LVGL支持硬件加速等。并提供对应的教
    的头像 发表于 09-29 17:36 1.1w次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b>SDK V1.5.0重磅升级:EtherCAT低抖动,<b class='flag-5'>AMP</b><b class='flag-5'>虚拟</b><b class='flag-5'>网卡</b>,LVGL硬件加速,多核调试等性能大幅提升|产品动态

    平台网络开发指南:从IP配置到远程控制 | 技术解析

    基础到应用,为开发者详细解析平台的网络开发能力。一、网络配置基础:灵活管理网卡参数1.1网卡
    的头像 发表于 10-22 17:13 6630次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平台</b>网络开发指南:从IP配置到远程控制 | <b class='flag-5'>技术</b><b class='flag-5'>解析</b>

    派文件系统指南:从开发到发布全流程实践 | 技术解析

    在嵌入式系统开发中,文件系统扮演着至关重要的角色,它负责数据的持久化存储、配置文件管理和资源访问等核心功能。平台提供了一套完整的文件
    的头像 发表于 11-05 18:13 8315次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b>派文件<b class='flag-5'>系统</b>指南:从开发到发布全流程实践 | <b class='flag-5'>技术</b><b class='flag-5'>解析</b>

    无线世界的创新方案

    无线世界的创新方案
    发表于 08-12 12:43

    分享移动电源资料(移动电源最新方案

    分享移动电源资料(移动电源最新方案)5V、2.1A和1.0A双USB输出,pads9.5)
    发表于 03-28 04:06

    新唐(nuvoton)举办 『M451创新方案设计大比拚』挑战赛,

    `新唐科技(nuvoton)举办 『M451创新方案设计大比拚』挑战赛,鼓励设计人员充分展现创新实力,尽情秀出原创设计作品!专业评审将根据参赛作品的创新性及针对 M451 MCU 内建功能的使用性
    发表于 04-21 16:53

    消费电子电池管理系统技术论坛 分享极致续航新方案

    亮点:   1、汇聚业内资深设计人员,获取优质技术资源;  2、与行业知名企业专家零距离沟通,突破技术瓶颈;  3、近200位行业精英,全方位解析
    发表于 09-16 14:08

    求一种基于GAP技术的网络保护设备设计新方案

    本文提出了基于GAP技术的网络保护设备设计新方案,阐述了主要模块的实现方法。
    发表于 04-29 06:45

    介绍一种车载GPS系统GPRS的新方案

    本文分析了车载GPS短信系统和GPRS发展现状及技术,重点介绍了车载GPS系统GPRS的新方案
    发表于 05-13 06:00

    STM32构建数字电源新方案

    STM32构建数字电源新方案,包含:STM32 MCU and MPU 产品矩阵、STM32平台化应用、数字电源核心逆变方案、数学加速器等。
    发表于 09-05 08:11

    无线世界的创新方案

    无线世界的创新方案
    发表于 01-14 12:37 6次下载

    智能家电组的创新方案

    英家好方案不嫌多,创新方案继续播! 今天,小编给大家带来的是最有意思的“智能家电组”的创新方案,语音交互,雷达感知,软件升级各类方案,应有尽有。小编认真脑补了未来的生活,葛优躺着就能轻
    的头像 发表于 10-12 16:55 3538次阅读
    智能家电组的<b class='flag-5'>创新方案</b>

    南柯电子|医疗设备电磁兼容整改:从技术突破到临床安全的新方案

    南柯电子|医疗设备电磁兼容整改:从技术突破到临床安全的新方案
    的头像 发表于 11-26 09:59 558次阅读

    SDK V1.7.5重磅升级:AMP虚拟网卡NFS支持,EtherCAT多电机控制,RC3562新功能全面加持

    来看看本次更新的亮点内容吧!一、内核能力全面增强AMP模式能力提升:3506AMP架构添加了NFS挂载支持,结合之前版本的虚拟网卡技术,实现
    的头像 发表于 02-04 18:35 924次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b>SDK V1.7.5重磅升级:<b class='flag-5'>AMP</b><b class='flag-5'>虚拟</b><b class='flag-5'>网卡</b>NFS支持,EtherCAT多电机控制,RC3562新功能全面加持

    平台AMP共享内存:Linux 与 RT-Thread 高速数据交换

    个核心问题。上一篇文章介绍了DSMC总线方案,适合与FPGA等外部设备高速通信。今天我们聚焦另一个场景——平台
    的头像 发表于 04-22 18:09 317次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>平台</b><b class='flag-5'>AMP</b>共享内存:Linux 与 RT-Thread 高速数据交换