MCU多核异构通信原理

摘要:

本文结合瑞萨RZ/G2L 多核处理器,给大家讲述一下多核异构设计及通信的原理。

随着电子技术的不断发展,以及市场需求的日益增长,嵌入式系统不仅要求执行复杂的控制任务,还需要实时地采集和处理数据。

为了满足这些需求,多核异构处理器成为了一种流行的解决方案。这类处理器通常结合了ARM架构的A系列核心(用于处理高级计算任务)以及M系列或R系列核心(专注于实时操作)。

在这种架构下,复杂的控制任务可以由搭载Linux的A核心处理,而实时数据的采集和处理则可以交由运行RTOS的M核或R核来完成。

本文结合瑞萨RZ/G2L 多核处理器,给大家讲述一下多核异构设计及通信的原理。

瑞萨多核处理器概述

在传统设计中,两颗芯片之间需要通过外部接口交换大量数据,这不仅占用了宝贵的引脚资源,而且数据传输效率低下。

相反,集成了A核和M核或R核的多核异构处理器利用内部总线结构实现了快速通信,并共享内部资源,从而避免了对外部引脚的占用。

这种多核异构的系统设计不仅降低了通信过程中的信息安全风险,还减少了芯片采购和管理成本,缩减了PCB板的成本和尺寸,并简化了开发流程。

瑞萨RZ/G2L处理器概述

配备双核Arm® Cortex®-A55 (1.2 GHz) CPU和单核Arm® Cortex®-M33 (200 MHz) CPU、3D图形加速引擎和视频编码解码引擎器的通用微处理器。

G2L框图

异构通信机制

异构通信机制(OPENAMP Open Asymmetric Multi-Processing)的方案越来越成熟了。

在RZ/G2L系列的MPU中,我们可以看到多核异构架构的一个实际应用。这款MPU拥有一个大核Cortex-A55,频率高达1.2GHz,能够运行Linux操作系统,以及一个小核Cortex-M33,频率为200MHz,专门用于运行RTOS或裸机(bare-metal)程序。这两个核心之间的异构通信是通过OpenAMP软件框架实现的。

OpenAMP是一个轻量级的通信协议,它使得不同的处理器能够通过共享内存或消息传递机制来进行交流。在一个多核处理系统中,各个处理器可能会运行不同的软件模块,而OpenAMP框架则为这些模块之间的数据交换和协作提供了一种有效的手段。通过这种方式,OpenAMP不仅简化了多处理器间的通信,还增强了整个系统的协同效率和功能性。见图1。

图1

Virtio 虚拟化模块

Virtio是一个共享内存管理的虚拟设备框架,Virtio中的vring是指向数据缓冲区指针的FIFO队列,有两个单向的vring,一个vring专用于发送到远程处理器的消息,另一个vring用于从远程处理器接收的消息, 数据就存放于共享的内存中,即Vring buffers, 一半用于发送,一半用于接收。

RPMsg远程处理器消息传递

RPMsg框架位于Virtio的上层,RPMsg(Remote Processor Messaging)框架是一种基于Virtio的消息总线。见图2。

图2

Remoteproc

主处理器上的Linux操作系统可以对远程处理器及其相关软件环境进行生命周期管理,即启动或关闭远程处理器。见图3。

图3

IPCC处理器间 通信控制器

MHU(Message Handling Unit)是MPU芯片内的一个IP模块,担任IPCC角色,用于Cortex-A55(CA55)之间或与Cortex-M33(CM33)之间的消息通信。数据传输通过共享内存方式实现。

一个通道由一对数据传输处理寄存器和响应传输处理寄存器组成,共挂载12个通道(CA55 Core0/Core1 CM33,安全和非安全区域)。见图4。

图4

以上介绍了RZ/G2L双核异构的通信方式,同时RZ/G2L产品也提供相应的软件支持。

Multi-os (CA55 Linux + CM33 RTOS)

客户可以使用灵活的软件包(FSP)快速开发应用程序,使用OpenAMP创建与Linux配合使用的应用程序。见图5。

图5

Cortex-M33开发环境

图6

相应硬件板及软件工具可以通过瑞萨官网获得。

JTAG在线调试

当连接JTAG时,必须如下设置DIP SW1。见图7。

图7

CORTEX-M33启动方式

● CM33由CA55加载启动● 引导过程中有多个时间点可以执行此操作:

● Arm Trusted Firmware

启动CM33的最快方法

允许将代码加载到安全RAM中

● u-boot -> Multi OS SW package默认方式

CM33 固件容易更新

二进制文件存储在u-boot可以访问的文件系统中

● Linux (remoteproc)

最方便维护,软件升级改动少

共享资源

资源共享时,请注意如下分配

1、引脚复用

2、内存分配

3、外设分配

相关推荐
尤老师FPGA31 分钟前
LVDS系列9:Xilinx 7系可编程输入延迟(二)
单片机·嵌入式硬件·fpga开发
雾削木3 小时前
mAh 与 Wh:电量单位的深度解析
开发语言·c++·单片机·嵌入式硬件·算法·电脑
X-yes3 小时前
MATLAB 2022a 部分讲解
汽车
RaLi和夕5 小时前
单片机学习笔记9.数码管
汇编·笔记·单片机·嵌入式硬件·学习
教练、我想打篮球6 小时前
03 基于 STM32 的温度控制系统
stm32·单片机·嵌入式硬件
电鱼智能的电小鱼6 小时前
EFISH-SBC-RK3588 —— 厘米级定位 × 旗舰算力 × 工业级可靠‌
linux·人工智能·嵌入式硬件·边缘计算
ltqshs7 小时前
STM32标准库和HAL库SPI发送数据的区别-即SPI_I2S_SendData()和HAL_SPI_Transmit()互换
stm32·单片机·嵌入式硬件
程序员JerrySUN7 小时前
驱动开发硬核特训 · Day 22(上篇): 电源管理体系完整梳理:I2C、Regulator、PMIC与Power-Domain框架
linux·驱动开发·嵌入式硬件
CyberSecurity_zhang7 小时前
汽车网络安全 -- 理解暴露面、攻击面和攻击向量
网络安全·信息安全·汽车
xyd陈宇阳8 小时前
STM32(M4)入门:定时器延时与系统滴答(价值 3w + 的嵌入式开发指南)
stm32·单片机·嵌入式硬件