原创 MPU进化,A核与M核通信过程解析

2022-11-21 09:40 457 2 2 分类: MCU/ 嵌入式

随着市场对嵌入式设备功能需求的提高,市面上出现了集成嵌入式处理器和单片机的主控方案,以兼顾性能和效率。

在实际应用中,嵌入式处理器和单片机之间需要进行大量且频繁的数据交换,如果采用低速串行接口,则数据传输效率低,这将严重影响产品的性能;而如果采用高速并口,则占用管脚多,硬件成本将会增加。

为解决这一痛点,各大芯片公司陆续推出了兼具A核和M核的多核异构处理器,如NXPi.MX8系列、瑞萨的RZ/G2L系列以及TI的AM62x系列等等。虽然这些处理器的品牌及性能有所不同,但多核通信原理基本一致,都是基于寄存器和中断传递消息,基于共享内存传输数据

以配电终端产品为例,A核负责通讯和显示等人机交互任务,M核负责采样和保护等对实时性要求较高的任务,双核间交互模拟量、开关量和录波文件等多种信息,A核+M核的方案既满足了传统采样保护功能,又支持多种接口通信及新增容器等功能,符合国家电网现行配电标准。

通信过程整体架构说明

一、 硬件层通信实现机制

通过物理内存DDR分配,将硬件层分为了两部分:TXVring Buffer(发送虚拟环状缓冲区)和RXVring Buffer(接收虚拟环状缓冲区);其中M核从TXVring区发送数据,从RXVring区读取接收数据,A核反之。

处理器支持消息传递单元(MessagingUnit,简称MU)功能模块,通过MU传递消息进行通信和协调,芯片内的M7控制核和A53处理核通过通过寄存器中断的方式传递命令,最多支持4组MU双向传递消息,既可通过中断告知对方数据传递的状态,也可发送最多4字节数据,还可在低功耗模式下唤醒对方,是保证双核通信实时性的重要手段。

寄存器输入输出通信模型

(1)CoreA写入数据; (2)MU将Tx 空位清0,Rx满位置1; (3)产生接收中断请求,通知CoreB接收状态寄存器中的接收器满,可以读取数据; (4)CoreB响应中断,读取数据; (5)CoreB读完数据后,MU将Rx满位清0,Tx空位置1; (6)状态寄存器向CoreA生成发送中断请求,告知CoreB读完数据,发送寄存器空。

通过以上步骤,就完成了1次从CoreA向CoreB 传递消息的过程,反之亦然。

二、驱动层Virtio下RPMsg通信实现

Virtio是通用的IO虚拟化模型,位于设备之上的抽象层,负责前后端之间的通知机制和控制流程,为异构多核间数据通信提供了层的实现。

RPMsg消息框架是Linux系统基于Virtio缓存队列实现的主处理核和协处理核间进行消息通信的框架,当客户端驱动需要发送消息时,RPMsg会把消息封装成Virtio缓存并添加到缓存队列中以完成消息的发送,当消息总线接收到协处理器送到的消息时也会合理地派送给客户驱动程序进行处理。

在驱动层,对A核,Linux采用RPMsg框架+Virtio驱动模型,将RPMsg封装为了tty文件供应用层调用;在M核,将Virtio移植,并使用简化版的RPMsg,因为涉及到互斥锁和信号量,最终使用FreeRTOS完成过程的封装,流程框图如下方所示。


主处理核与协处理核数据传递流程图

(1)Core0向Core1发送数据,通过rpmsg_send函数将数据打包至Virtioavail链表区; (2)在avail链表寻找共享内存中空闲缓存,将数据置于共享内存中; (3)通过中断通知Core1数据到来,共享内存由avail链表区变至used区; (4)Core1收到中断,触发rpmsg的接收回调函数,从used区获取数据所在的共享内存的物理地址,完成数据接收; (5)通过中断通知Core0数据接收完成,共享内存缓存由used区变为avail区,供下次传输使用。

三、应用层双核通信实现方式

在应用层,对A核可使用open、write和read函数对 /dev下设备文件进行调用;对M核,可使用rpmsg_lite_remote_init、rpmsg_lite_send和rpmsg_queue_recv函数进行调用,不做重点阐述。

四、实际使用效果

通过程序实测,M核和A核可以批量传输大数据。同样以配电产品为例——128点采样的录波文件大约为43K,若通过传统的串行总线传输方式,需要数秒才可完成传输。

而使用i.MX8MP的双核异构通信方案,只需要不到0.5秒即可传输完成,数据传输效率提升数十倍!同时还避免了串行总线易受EMC干扰的问题,提高了数据传输稳定性,简化了应用编程,可满足用户快速开发的需求。

以上就是关于多核异构处理器中A核与M核通信过程的解析,飞凌www.forlinx.com多核异构平台有NXP的i.MX8系列、瑞萨的RZ/G2L系列以及TI的AM62x系列等等,您可关注了解。

MPU

文章评论0条评论)

登录后参与讨论
相关推荐阅读
祢豆子 2022-12-22 13:03
基于飞凌RK3588核心板的无人机主控方案
近些年来无人机(UAV)凭借其无可替代的“随手航拍”的能力进入了大众视野,某些具有优秀影像能力的无人机甚至成功进入影视圈,成为了电影和剧集拍摄工作中不可缺少的一份子。但除了“热门电子消费品”和“影视拍...
祢豆子 2022-12-17 09:23
用全志A40i开发板玩转FFmpeg
1. FFmpeg的安装FFmpeg是用来记录、转换数字音频、视频的开源软件,它支持文件和网络流操作。它支持以函数库的方式使用,所以有很多软件都依赖它,比如VLC、暴风影音、腾讯会议等。它的命令行程序...
祢豆子 2022-12-16 16:41
基于RK3588的8K全景相机方案
伴随着虚拟现实技术(简称VR)的热潮,VR全景影像开始兴起,全景相机市场也迎来了高速发展。近年来,360°全景相机几乎成为了数码潮人和vlog拍摄者手中必不可少的一款产品,打开视频网站和图库,你可以看...
祢豆子 2022-12-15 20:25
手把手教你在Ubuntu定制文件系统
为了给客户的测试和开发提供便利,飞凌嵌入式的开发板产品一般都支持多种操作系统,以基于全志T507H处理器设计研发的OKT507-C开发板为例,它支持三种操作系统,分别是:Linux、Android 和...
祢豆子 2022-12-15 15:39
带你走近真8K-RK3588开发板
OK3588-C开发板基于Rockchip旗舰级AIoT处理器RK3588设计开发,先进的8nm制程工艺、Big.Little大小核架构以及L3缓存的加入都极大提升了它的大数据处理能力,同时还配备了丰...
我要评论
0
2
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /2 下一条