0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Jacinto 7核间通信解决方案

星星科技指导员 来源:TI 作者:Fredy Zhang 2023-03-16 09:19 次阅读

近年来,处理器性能越来越强,无论是通用处理器还是嵌入式处理器,都进入了多核处理器时代,多核处理器中,每个核心不能独立工作,需要协同工作才能充分发挥处理器的性能,也就是需要高效的核间通信(Inter-processor Communication)机制。核间通信的主要目标是,充分利用硬件提供的机制,实现高效的核间通信,从而充分发挥Soc的整体性能。

核间通信(IPC)方案简介

TI J7 DRA8xx/TDA4xx、AM65xx、J6家族的处理器,基于异构、可扩展的架构开发,拿TDA4VM的处理器来说,该处理器包含了TI DSP处理器(C66/C7x)、Cortex A72、Main域Cortex R5F、MCU域Cortex R5F、深度学习加速器MMA、图形处理器GPU等核,属于多核异构的架构。Cortex A72可用于通用计算、图形处理器GPU用于3D图像的加速、DSP可用于算法的加速、C7x/MMA可支持深度学习的处理、Cortex-R5F可用于外设的控制和图像的前后处理等。多核异构的优点是采用适合的核做擅长的事,再加上专用硬件加速器也可处理特定任务,从而在性能、功耗和成本 上达到最佳平衡。

核间通信(IPC)从软件的角度来讲, IPC提供了运行在处理器上的软件接口,可供客户调用,从而实现在多核处理器中核与核之间的通信。举个例子来说,如图1: TI Jacinto7软件框架紫色框模块所示,每个核上都运行了IPC软件模块,从而实现了TDA4VM上不同核之间的核间通信。本文的后续部分将以TDA4VM为例说明TI多核异构处理器的核间通信方案,对于其它Jacinto7处理器、AM65xx、J6 等多核环境中的处理器之间进行通信采用的是同样的方式。

pYYBAGQSbouAPcRBAACB5f3yvxI001.png

图1 : TI Jacinto7 TDA4VM SW Framework

Jacinto7 TDA4VM处理器的核间通信(IPC)框图如图2所示,TDA4VM拥有2*A72、6*R5F、2*C66、C7x等核,不同核之间的通信依赖IPC(Inter-Processor Communication)。同时,同一种类型的多个核心又可以运行在不同的模式,比如A72可以运行的SMP模式,双核R5F可以运行在Lockstep或Split Mode上,因此,核间通信方案要充分利用硬件提供的机制,实现高效的核间通信,从而充分发挥Soc的整体性能。

poYBAGQSbouACuphAABcsUltKgE682.png

图2 : TI Jacinto7 TDA4VM IPC Framework

TDA4VM硬件提供了Mailbox硬件模块,Mailbox中断机制允许软件在两核之间建立通信通道,这种机制类似于邮箱工作的方式。每个核都有一个专属的邮箱,邮件就是消息内容,通过指定接收方,就可以将消息传递到指定核。Mailbox硬件上支持中断,因此指定核有消息时,就会收到中断,然后开始处理邮件,即处理消息。这就是Mailbox的工作方式。

TDA4VM的IPC方案,基于Mailbox的实现的方式的不同,常用的核间通信方式有两种。

基于RPMSG的核间通信解决方案,适合小块数据消息传递。

基于Share Memory核间通信解决方案,适合大块数据传输。

基于RPMSG的核间通信解决方案

RPMSG定义了通信协议的接口,采用RPMSG协议,基于Mailbox模块的核间通信方案如图3所示,该方案传递消息时,首先需要将消息拷贝到的共享内存中(VRing),然后,利用Mailbox将消息传递到指定核上。

pYYBAGQSboyAWRXyAACMKQvisVw456.png

图3: RPMSG的核间通信解决方案

上图中术语和缩写解释如下:

Term Definition or Explanation
IPC Inter-Processor Communication
MailBox IP which provides queued interrupt mechanism for communication channel
VRing Ring Buffer in shared memory
Rpmsg queue on local memory

核间通信步骤如下所述(步骤如红色圈中所示):

发送端发送: Core1核调用Rpmsg_send发送消息,应用程序复制到两个 CORE 之间使用的 VRING。此后,IPC 驱动程序将 VRING ID 发布到硬件指定Mailbox的通道中。

接收端接收:Core2核上Mailbox触发中断,在core2的 ISR 中,它提取 VRING ID,然后根据 VRING ID,检查该 VRING 中的任何消息。

接收端发送: Core2核应用程序调用Rpmsg_send发送消息,应用程序复制到两个 CORE之间使用的 VRING。此后,IPC驱动程序将 VRING ID 发布到硬件Mailbox 的另外一个通道中。

发送端接收: Core1核上Mailbox触发中断,在core1的ISR中,它提取 VRING ID,然后根据 VRING ID,检查该 VRING 中的任何消息。

注意事项:

RPMSG传输消息最大512 Byte。

Performance 参考这里.

基于Share Memory核间通信解决方案

基于Share Memory的核间通信解决方案,底层仍然使用的是硬件的模块Mailbox,如图4所示所示,发送和接受采用的是不同的Mailbox通道。 每一组核与核之间使用的都是指定的Mailbox通道。同时,Share Memory的解决方案需要分配指定Share Memory用以核间通信共享数据。 Share Memory是一段memory 能够被多个核所所访问,所以名为共享内存,在TDA4VM中,这段内存通常是来自于DDR中的一个数据段。共享内存在核间通信方案中,一个核可以将数据写入共享内存,Mailbox可以将内存指针传递到另一个核上,另一个核可以拿到内存指针后,直接从Share Memory读取数据,这一个过程不需要经过数据的拷贝,因此,非常高效,适合大数据量的传输。

poYBAGQSboyAfuEkAAA5KO7hARU779.png

图4: 基于Share Memory的核间通信解决方案

核间通信步骤如下所述:

Processor 1: 拷贝数据到Share Memory中的指定位置;

Processor 1:将Share Memory中的指定地址等信息写入Mailbox的指定通道;

Processor 2:接收Mailbox 中断和消息的地址;

Processor 2:从Share Memory中的指定地址读取消息;

Processor 2: 处理接收到的消息,并准备回复消息;

Processor 2:拷贝数据到Share Memory 指定位置;

Processor 2:将Share Memory中的指定地址等信息写入Mailbox的指定通道;

Processor 1:接收Mailbox 中断和消息的地址;

Processor 1:从Share Memory中的指定地址读取消息;

Processor 1:处理接收到的消息。

总结

核间通信广泛应用于TI的多核异构处理器,本文介绍了TI多核异构处理的两种核间通信(IPC)的两种解决方案。基于RPMSG的核间通信解决方案采用了RPMSG协议,广泛应用于Soc内部核之间的消息传递,比如不同核对Camera的控制。适用于消息量小的类型。基于Share Memory核间通信解决方案,由于消息传递过程不需要数据拷贝,数据传输更高效,因此,适用于大块的数据传输,TDA4VM内部图像数据的传输就来自于这种方案。另外,需要注意的时,TDA4VM划分了主域核MCU域,MCU域的软件通常单独开发,对于MCU与其它核的通信采用CDD IPC软件模块,基于Share Memory核间通信解决方案可适用有大数据量传输的需求。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18304

    浏览量

    222358
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16024

    浏览量

    343753
  • 嵌入式
    +关注

    关注

    4984

    文章

    18300

    浏览量

    288818
收藏 人收藏

    评论

    相关推荐

    立体智慧仓储解决方案.#云计算

    解决方案智能设备
    学习电子知识
    发布于 :2022年10月06日 19:45:47

    关于AM5728通信方式(共享内存)问题

    您好,我使用的开发板为AM5728,目前要在两个ARM-Cotex-A15和两个DSP上都应用OS,初步定为都运行SYS/BIOS,在这种情况下我们想实现实时、快速、可靠的通信。 我现在了解到
    发表于 05-15 07:34

    非对称双MCU基础知识及通信

    来源 网络本文从对比两颗分立MCU与单芯片双MCU开始(以LPC4350为例),展开介绍了非对称双MCU的基础知识与重要特点。接下来,重点介绍了
    发表于 05-15 14:26

    6678 多核导航器 通信

    您好!        我最近使用6678的多核导航器进行通信,有些地方不明白,想问下各位专家。      我是这么做的,我通过CIC把48事件映射到中断4上,DSP事件48是高优先级队列
    发表于 06-21 06:54

    关于C6678IPC通信的问题

    测试C6678的通信,使用的IPC中断的方式。中间看到在文档中关于每个IPC生成寄存器中包含了28个源ID,源ID的作用取决于软件的定义,是不是可以理解为我如果写其中的源SRCS27,则我在中断
    发表于 08-03 07:15

    IPC通信测试配套IPC例子的PDF文档里的通信时间比我测试的少了4个数量级,请问是什么原因?

    利用培训资料中的IPC通信例子,其中用TSCL测试时间,在EVM6678上我测试通信时间
    发表于 08-07 09:04

    搞定单CPU内双通信和双CPU通信

    [table][tr][td] 终于搞定了单CPU内双通信和双CPU通信 +-----+ + ARM ++ DDR + + DS
    发表于 08-19 01:37

    TI“Jacinto 6 Eco”DRA72x 处理器让车载信息娱乐和车联网功能更加丰富

    可在数字集群、后视摄像头以及其它安全关键型汽车功能提供故障安全隔离—从而提供无与伦比、低成本高效益的可重复使用性和可配置性。” 模拟解决方案可完成信息娱乐设计DRA72x“Jacinto 6 Eco
    发表于 09-14 11:14

    TI “Jacinto 6”将怎样影响驾乘体验?

    。图形驱动的仪表板显示、丰富的连接功能以及后座娱乐解决方案现正将这种个性化复制到汽车里,而 Jacinto 处理器则为实现这些高级功能铺平道路。要了解这方面的真实案例,请阅读我们关于在奥迪“MIB
    发表于 09-26 11:12

    请问ESP32双如何使用队列进行任务通信

    队列是什么?ESP32双如何使用队列进行任务通信
    发表于 01-14 07:24

    Jacinto7处理器摄像头接入和ISP的处理能力

    的接入和处理能力对用户方案至关重要,因此,本文对Jacinto7 TDA4VM/DRA829处理的摄像头接入和处理能力进行了概述,并使用实际的Use Case 介绍了摄像头的接入和处理方案,用户可以根据
    发表于 11-03 06:05

    通信(IPC)解决方案

    框模块所示,每个上都运行了IPC软件模块,从而实现了TDA4VM上不同之间的通信。本文的后续部分将以TDA4VM为例说明TI多核异构
    发表于 11-03 07:26

    A+M通信过程解析

    ,M负责采样和保护等对实时性要求较高的任务,双交互模拟量、开关量和录波文件等多种信息,A+M
    发表于 11-23 15:09

    Jacinto 6 QNX系统汽车解决方案介绍

    具有全景可视摄像头的Jacinto 6 QNX汽车解决方案
    的头像 发表于 08-23 00:11 4097次阅读

    Jacinto™︎ 7核间通信解决方案

    Jacinto™︎ 7核间通信解决方案
    发表于 10-28 11:59 3次下载
    <b class='flag-5'>Jacinto</b>™︎ 7核间<b class='flag-5'>通信</b><b class='flag-5'>解决方案</b>