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、外设分配
相关文章:
MCU多核异构通信原理
摘要: 本文结合瑞萨RZ/G2L 多核处理器,给大家讲述一下多核异构设计及通信的原理。 随着电子技术的不断发展,以及市场需求的日益增长,嵌入式系统不仅要求执行复杂的控制任务,还需要实时地采集和处理数据。 为了满足这…...
在autodl搭建stable-diffusion-webui+sadTalker
本文介绍在autodl.com搭建gpu服务器,实现stable-diffusion-webuisadTalker功能,图片音频 可生成视频。 autodl租GPU 自己本地部署SD环境会遇到各种问题,网络问题(比如huggingface是无法访问),所以最好的方…...
【办公类-16-10-01】“2023下学期 中4班 自主游戏观察记录(python 排班表系列)
背景需求 上学期的周安排里,每班每周的自主游戏会轮到多个不同的内容 因此在每周的自主游戏观察有2次记录,观察的项目可以写不一样的, 如一位老师写沙水游戏,另一位写表演游戏 本学期,中班的自主游戏全部是户外的&am…...
机器学习:SVM算法(Python)
一、核函数 kernel_func.py import numpy as npdef linear():"""线性核函数:return:"""def _linear(x_i, x_j):return np.dot(x_i, x_j)return _lineardef poly(degree3, coef01.0):"""多项式核函数:param degree: 阶次:param …...
基于yolov5的人脸口罩检测,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】
功能演示: 基于yolov5的人脸口罩检测系统,支持图像检测,视频检测和实时摄像检测功能(pytorch框架)_哔哩哔哩_bilibili (一)简介 基于yolov5的人脸口罩检测系统是在pytorch框架下实现的&#…...
2024如何恢复旧版的Chrome的主题样式
起因 chrome 更新版本之后的主题样式变成了浅紫色的页签卡样式,感觉很不习惯,也很不喜欢 如何换回旧版主题 通过主题商店,安装旧版本的主题 主题商店搜索下面,或着直接访问下面的地址 Chrome Original White Theme https://…...
【文生视频】Diffusion Transformer:OpenAI Sora 原理、Stable Diffusion 3 同源技术
文生视频 Diffusion Transformer:Sora 核心架构、Stable Diffusion 3 同源技术 提出背景输入输出生成流程变换器的引入Diffusion Transformer (DiT)架构Diffusion Transformer (DiT)总结 OpenAI Sora 设计思路阶段1: 数据准备和预处理阶段2: 架构设计阶段3: 输入数据…...
Redis 服务集群、哨兵、缓存及持久化的实现原理和应用场景
Redis 是一种高性能的键值存储系统,已经成为了许多企业和互联网公司的核心技术之一。本文将介绍 Redis 的服务集群、哨兵以及缓存实现原理和应用场景,以帮助读者更好地理解和使用 Redis。 引言: 随着互联网应用规模不断扩大,Redi…...
通过Redis增减库存避坑
问题: 先执行get获取值,判断符合条件再执行incr、decr操作。在临界缓存失效的情况下,会默认赋值当前key为永不过期的0,再执行加减法,导致程序异常。 推荐解决方案: 1、限制接口频率:先incr&…...
Windows系统搭建Elasticsearch引擎结合内网穿透实现远程连接查询数据
文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎,它提供了一个分布式、多…...
Java爬虫使用JSoup获取静态资源图片
import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.FileOutputStream;/*** 获取静态图片*/public class ImageDownloader {public static void main…...
LeetCode 2433.找出前缀异或的原始数组
给你一个长度为 n 的 整数 数组 pref 。找出并返回满足下述条件且长度为 n 的数组 arr : pref[i] arr[0] ^ arr[1] ^ … ^ arr[i]. 注意 ^ 表示 按位异或(bitwise-xor)运算。 可以证明答案是 唯一 的。 示例 1: 输入…...
C++面试:系统网络性能评估与优化
系统网络性能评估与优化是指对计算机系统中的网络部分进行评估分析,并采取一系列措施来提升网络性能的能力。在面试中,涉及这一主题的问题可能会围绕以下几个方面展开。 网络性能评估 基于网络延迟、带宽、吞吐量等指标对网络性能进行评估。使用工具&a…...
Java适配器模式 - 灵活应对不匹配的接口
Java适配器模式 - 灵活应对不匹配的接口 引言: 在软件开发中,我们经常遇到不同系统、库或框架之间的接口不兼容问题。为了解决这些问题,我们可以使用适配器模式。适配器模式是一种结构型设计模式,它允许不兼容的接口之间进行协作…...
[ai笔记12] chatGPT技术体系梳理+本质探寻
欢迎来到文思源想的ai空间,这是技术老兵重学ai以及成长思考的第12篇分享! 这周时间看了两本书,一本是大神斯蒂芬沃尔弗拉姆学的《这就是ChatGPT》,另外一本则是腾讯云生态解决方案高级架构师宋立恒所写的《AI制胜机器学习极简入门》…...
Elasticsearch:使用 ELSER v2 进行语义搜索
在我之前的文章 “Elasticsearch:使用 ELSER 进行语义搜索”,我们展示了如何使用 ELESR v1 来进行语义搜索。在使用 ELSER 之前,我们必须注意的是: 重要:虽然 ELSER V2 已正式发布,但 ELSER V1 仍处于 [预览…...
智慧农业之智能物流
智慧物流属于农业生产环节中的重要节点,上游为农业生产环节,下游为销售与商贸环节,因此,通过联通生产与销售环节,通过合理调配物流过程,可以实现对于农产品的快速运输与销售,减少中间环节中的无效损耗,从而实现增收节支,实实在在地解决了农产品利润偏低的问题。 生产…...
Redis主从、哨兵、Redis Cluster集群架构
Redis主从、哨兵、Redis Cluster集群架构 Redis主从架构 Redis主从架构搭建 主从搭建的问题 如果同步数据失败,查看log日志报错无法连接,检查是否端口未开放出现”Error reply to PING from master:...“日志,修改参数protected-mode no …...
Javascript 运算符、流程控制语句和数组
【三】运算符 【1】算数运算符 (1)分类 加减乘除:*/取余:%和python不一样的点:没有取整// (2)特殊的点 只要NaN参与运算得到的结果也是NaNnull转换成0,undefined转换成NaN 【2…...
电机驱动死区时间
电机驱动死区时间 电机驱动死区时间死区时间(Dead Time)自己话补充说明 电机驱动死区时间 电机驱动死区时间一般在几纳秒到几微秒之间,具体长度取决于所使用的电子器件。 一、什么是电机驱动死区时间? 电机驱动死区时间指的是在电…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
