多核通信开发难?那这个ARM + RISC-V方案,我要认真看看
ARM核心一般负责接口驱动、业务逻辑、核心算法等,RISC-V核心一般专注于实时控制、数据采集等。如何实现二者高效协同?AMP架构 + RPMsg协议给出答案,轻松实现ARM与RISC-V核间通信。https://file1.elecfans.com/web3/M00/5D/FA/wKgZO2n8CM2AI53NAAMNVRTrzoI116.pngAMP(Asymmetric Multi-Processing),即非对称多处理架构,指多个核心相对独立运行不同的操作系统或裸机应用程序,如Linux + RTOS/裸机,需要一个主核心来控制整个系统以及其它从核心。每个处理器核心相互隔离,拥有属于自己的内存,既可各自独立运行不同的任务,又可多个核心之间进行核间通信。https://file1.elecfans.com/web3/M00/5D/FB/wKgZPGn8CNOAITzgAAhQGynJ6-4572.png基于RPMsg(Remote Processor Messaging),即远程处理器消息传递,是一种专为异构多核处理系统设计的通信协议。它允许不同处理器核心之间通过共享内存高效地交换消息,为主核心和从核心之间提供了一种标准化的消息传递机制,使得这些不同架构的核心能够协同工作,最大限度地发挥它们的性能。▍应用场景该方案适配多种工业应用场景,针对性解决多核协同难题:
工业网关:ARM处理网络通信,RISC-V处理数据采集。工业PLC:ARM负责逻辑决策,RISC-V负责实时控制。智能终端:ARM负责用户操作响应,RISC-V处理外设控制。
▍ARM + RISC-V通信演示以下基于全志T536异构多核工业处理器,演示如何通过RPMsg实现ARM和RISC-V核心通信功能。
(1)RISC-V核心:运行RTOS程序,等待接收Linux RPMsg数据。接收到数据后,把数据发回给Linux,循环往复接收与发送RPMsg数据,实现核间通信。
(2)ARM核心:运行Linux应用程序,发送Linux RPMsg数据,并接收RISC-V程序发回的RPMsg数据。https://file1.elecfans.com/web3/M00/5D/FB/wKgZPGn8CN6AGXpXAAxmXpo3bjk791.png将本案例的可执行文件amp_rv0.bin拷贝至评估板系统的"/lib/firmware/"目录下,执行如下命令,启动RISC-V核心并加载工程镜像。https://file1.elecfans.com/web3/M00/5D/FA/wKgZO2n8COSAPkdFAAsNGrakfQY481.pngRS232 S-UART1调试串口(即RISC-V的调试串口)终端将会打印如下类似信息。https://file1.elecfans.com/web3/M00/5D/FA/wKgZO2n8COmAXm3cAAlal7a9Q9A075.png将案例可执行程序rpmsg_echo拷贝至文件系统任意目录下,并赋予可执行程序rpmsg_echo执行权限。https://file1.elecfans.com/web3/M00/5D/FB/wKgZPGn8CO-AJtMcAAByyXy6qi0997.png执行如下命令运行程序,Linux端将发送5次RPMsg数据:tronlong,RISC-V端将接收并打印RPMsg数据至RS232 S-UART1串口。https://file1.elecfans.com/web3/M00/5D/FA/wKgZO2n8CPaAE3L2AATf6gxK8Ws028.pngRS232 S-UART1串口打印信息如下图所示。https://file1.elecfans.com/web3/M00/5D/FB/wKgZPGn8CQ2AEtlyAAH8ToiWR7U343.png执行如下命令,关闭RISC-V核心,程序将停止运行。https://file1.elecfans.com/web3/M00/5D/FB/wKgZPGn8CRSADw_-AAFCxab8T20525.png
通过AMP架构+ RPMsg协议,无需复杂配置,即可快速实现ARM与RISC-V核间通信,让异构多核的优势充分发挥,助力工业、智能终端等场景的产品研发提速!
页:
[1]