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、外设分配

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/409378.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

游戏配置内存“瘦身”策略

背景 游戏配置数据绝对是游戏服务器进程的内存大头,有些游戏服务器单纯数据配置的容量就超过一个G。因此,这部分内存优化也就放在首要位置了。 优化策略 在《服务器进程如何降低内存》一文中,我们讲述了可以通过“优化游戏配置缓存”来降低游戏服务器进程的内存使用量。本…

基于协同过滤算法的体育商品推荐系统

摘要 本文深入探讨了基于协同过滤算法的体育商品推荐系统的构建方法及其在电子商务中的重要性。首先,介绍了协同过滤算法的基本原理,包括用户-商品矩阵、相似度度量和推荐生成。其次,探讨了协同过滤算法在体育商品推荐中的两种主要应用方式&a…

sql-labs第46关(order by盲注脚本)

一、环境 网上有自己找 二、解释 order by 注入我们看他的true和false来进行注入出来 二、实操 让我们用sort 看看源码 最终我们的id是放到order by后面了 如果我们直接用列去排序 ?sortusername/password username: password: 可以看到顺序是不…

IO进程线程:通信

1.定义互斥锁 #include<myhead.h>int num520;//临界资源//1.创建一个互斥锁变量 pthread_mutex_t mutex;//定义任务&#xff11;函数 void *task1(void *arg) {printf("11111111111111\n");//3.获取锁资源pthread_mutex_lock(&mutex);num1314;sleep(3);pr…

数据结构与算法:红黑树讲解

关于红黑树&#xff0c; 这篇讲的更详细易懂。 https://www.cnblogs.com/jakelin/p/14324966.html 一颗平衡的二叉搜索树的任意节点平均查找效率为树的高度h&#xff0c;即O(lgn)。 但是如果二叉搜索树的失去平衡&#xff08;元素全在一侧&#xff09;&#xff0c;搜索效率就…

牛客周赛 Round 33 解题报告 | 珂学家 | 思维场

前言 整体评价 感觉这场更偏思维&#xff0c;F题毫无思路&#xff0c;但是可以模拟骗点分, E题是dij最短路. A. 小红的单词整理 类型: 签到 w1,w2 input().split() print (w2) print (w1)B. 小红煮汤圆 思路: 模拟 可以从拆包的角度去构建模拟 注意拆一包&#xff0c;可以…

如何增加层次厚度?

Q 老师&#xff0c;我在做一个斧头武器&#xff0c;如何在平面上增加厚度和层次呢&#xff1f; A 选中这几个线&#xff0c;点连接就会出现中线&#xff0c;把中线稍作调整即可~

Springboot+vue的社区医疗综合服务平台(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的社区医疗综合服务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的社区医疗综合服务平台&#xff0c;采用M&#xff08;m…

数据分析这么卷吗!AI几分钟做完我半天的工作,这让人怎么办!

随着AI技术的飞速发展&#xff0c;人工智能领域正在经历一场前所未有的革命。无论是ChatGPT还是谷歌的巴德&#xff0c;以及国内诸如文心一言、ChatGLM等产品的涌现&#xff0c;都在不断地证明着这一点。这些技术不仅在推动着各行业的发展&#xff0c;更在不断地改变着我们的生…

Redis如何修改key名称

点击上方蓝字关注我 近期出现过多次修改Redis中key名字的场景&#xff0c;本次简介一下如何修改Redis中key名称的方法。 1. 命令行方式修改在Redis中&#xff0c;可以使用rename命令来修改Key的名称。这个命令的基本语法如下&#xff1a; RENAME old_key new_key 在这里&#…

详细分析Pandas中的Series对象(附Demo)

目录 1. 问题所示2. 基本知识3. API Demo4. 示例Demo5. 彩蛋 1. 问题所示 从实战上手基础知识 一开始遇到这个Bug&#xff1a; TypeError: unsupported operand type(s) for -: str and float后面经了解执行减法运算时发生了错误&#xff0c;其中一个操作数是字符串类型&…

继承(extends)

继承[extends] 继承的好处继承的示意图继承的使用细节JVM的内存&#xff1a;继承的内存布局 继承的好处 1&#xff09;提高代码的复用性 2&#xff09;代码的扩展性和维护性提高了 继承的示意图 继承的使用细节 1&#xff09;子类继承了所有属性和方法&#xff0c;非私有的…

liunx前后端分离项目部署

文章目录 1、nginx的安装和自启动2.nginx负载均衡3.前后端项目部署-后端部署4.前后端项目部署-前端部署 1、nginx的安装和自启动 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel1.安装我们nginx所需要的依赖 wget http://nginx.org/download/nginx-1.…

线程池的常用实现及执行流程

线程池 线程池线程池接口线程池参数线程池分类动态数目线程池固定数目线程池单例线程池任务调度线程池 线程池的执行流程 线程池 线程池接口 线程池参数 1、corePoolSize&#xff1a;核心线程数&#xff0c;线程池中最少线程&#xff0c;核心线程不会被回收。 2、maximumPoo…

做接口测试的流程一般是怎么样的?UI功能6大流程、接口测试8大流程这些你真的全会了吗?

在讲接口流程测试之前&#xff0c;首先需要给大家申明下&#xff1a;接口测试对于测试人员而言&#xff0c;非常非常重要&#xff0c;懂功能测试接口测试&#xff0c;就能在企业中拿到一份非常不错的薪资。 这么重要的接口测试&#xff0c;一般也是面试笔试必问。为方便大家更…

自定义搭建管理系统

最近使用自己搭建的脚手架写了一个简易管理系统&#xff0c;使用webpackreactantd&#xff0c;搭建脚手架参考&#xff1a; 使用Webpack5搭建项目&#xff08;react篇&#xff09;_babel-preset-react-app-CSDN博客 搭建的思路&#xff1a; 1. 基建布局&#xff0c;使用antd的…

Linux调用可执行程序:system()函数和execl函数

system()函数&#xff1a; system()函数是一个在C/C编程语言中的库函数&#xff0c;用于在操作系统中执行命令。 函数声明如下&#xff1a; int system(const char *command);该函数接受一个指向以空字符结尾的字符串的指针作为参数&#xff0c;该字符串包含要执行的命令。函…

[ai笔记12] chatGPT技术体系梳理+本质探寻

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第12篇分享&#xff01; 这周时间看了两本书&#xff0c;一本是大神斯蒂芬沃尔弗拉姆学的《这就是ChatGPT》,另外一本则是腾讯云生态解决方案高级架构师宋立恒所写的《AI制胜机器学习极简入门》&#xf…

OpenHarmony Docker移植实践

Docker简介 从操作系统诞生之日起&#xff0c;虚拟化技术就不断的演进与发展&#xff0c;结合目前云原生的发展态势&#xff0c;容器无疑是其中的重要一环。 Docker是一个开源的软件项目&#xff0c;可以在Linux操作系统上提供一层额外的抽象&#xff0c;让用户程序部署在一个…

单日收益四位数的Ai姓氏头像项目

单日收益四位数的Ai姓氏头像项目 发布时间&#xff1a;2024-02-24 00:00:00作者&#xff1a;傲战浏览&#xff1a;未知分类&#xff1a;教程网朗读&#xff1a; 最近利用AI一键生成头像的这个项目又火起来了,据说一天直播间光礼物就能收到大几千 操作起来没什么难度,一键生成 …
最新文章