摘要:
本文结合瑞萨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、外设分配