发布日期: 2024/12/17 02:23

ARM + RISC-V核间通信方案,基于全志T113-i的OpenAMP非对称架构


本文主要给大家分享的是基于创龙科技TLT113-EVM评估板(基于全志T113-i)的ARM + RISC-V核间通信开发案例,适用开发环境如下。

  • Windows开发环境:Windows 7 64bit、Windows 10 64bit
  • 虚拟机:VMware15.5.5
  • Linux开发环境:Ubuntu18.04.4 64bit
  • U-Boot:U-Boot-2018.07
  • Kernel:Linux-5.4.61、Linux-RT-5.4.61
  • LinuxSDK:T113_Tina5.0-V1.0(Linux)

OpenAMP简介


AMP(Asymmetric Multi-Processing),即非对称多处理架构。“非对称AMP”双系统是指多个核心相对独立运行不同的操作系统或裸机应用程序,如Linux + RTOS/裸机,但需一个主核心来控制整个系统以及其它从核心。每个处理器核心相互隔离,拥有属于自己的内存,既可各自独立运行不同的任务,又可多个核心之间进行核间通信。OpenAMP框架是一个提供用于处理非对称多处理架构(AMP)系统的软件组件。

随着对嵌入式系统要求的不断提高,非对称AMP架构如今已成为一种新选择,主要应用于工业领域,如工业PLC、继电保护装置、小电流选线设备等。


RPMsg(Remote Processor Messaging),是一种专为异构多核处理系统设计的通信协议。它允许不同处理器核心之间通过共享内存高效地交换信息,为主核心和从核心之间提供了一种标准化的消息传递机制,使得这些不同架构的核心能够协同工作,最大限度地发挥它们的性能。

RPMsg简介


RPMsg的主要特点包括: (1)基于VirtIO管理共享内存,实现了高效的数据传输; (2)避免额外的拷贝开销,优化了内存使用; (3)配备同步与互斥机制,确保数据交换的高效与安全;


T113-i核间通信开发案例演示


为了简化描述,本文仅摘录部分方案功能描述与测试结果,详细产品资料请扫描文末二维码下载。

本期案例主要是通过使用RPMsg框架,来实现异构的处理器之间进行相互通信。ARM核心运行Linux系统与rpmsg_echo应用程序,RISC-V核心运行RISC-V程序,实现ARM端的rpmsg数据的接收与发送功能。

首先,我们使用Type-C线连接PC机和评估板的USB TO UART0串口,使用RS232交叉串口母母线、USB转RS232公头串口线,将评估板的RS232 UART2串口连接至PC机的USB接口,如下图所示。


可以看到,当我们启动RISC-V核心并加载工程镜像后,RISC-V核心启动后会自动运行程序,RS232 UART2串口终端便打印显示出如下图内容。


然后,我们执行如下命令运行ARM端应用程序,发送5次rpmsg数据包至RISC-V核心,当RISC-V核心每收到1次rpmsg数据包,就会将数据包发送回ARM端。

Target# ./rpmsg_echo -r c906_rproc@0 -m tronlong -n 5


当ARM端程序运行时,RS232 UART2串口终端将会打印如下类似信息。



-End-

"微信扫一扫关注公众号"