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

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

3天内不再提示

核间通信可能的实现机制

麦辣鸡腿堡 来源:TrustZone 作者:Hcoco 2023-09-13 17:39 次阅读

mailbox其实是多核处理器soc上,核与核之间互相发中断的机制,由于核与核之间可能存在不同的业务,故硬件上设计分配一两个中断已经无法满足业务的需求,软件拓展起来很困难,所以mailbox可以理解为软件可自由定义的中断模块。

用于在片上处理器之间通信的一种mailbox队列中断机制,mailbox队列中断机制允许软件通过一组寄存器和关联的中断设置和得到信息在二个处理之间建立通信渠道。

核间通信的主要目标是:充分利用硬件提供的机制,实现高效的CORE间通信;给需要CORE间通信的应用程序提供简洁高效的编程接口

根据所使用的硬件特性,核间通信可能的实现机制有:

  1. Mailbox中断;
  2. 基于共享内存的消息队列;
  3. POW + Group;
  4. FAU;支持原子的读,写,fetch and add操作。

每个core有一个相应的32bit的mailbox寄存器,每一位可被单独地设置或清零。这对于core间的中断非常有用,任意core可直接通过其它core的mailbox对其它core发出中断。当mailbox被置位时,相应core的中断寄存器也同时被置位,软件可实现其中断处理。

Bootloader支持Octeon_phy_mem_named_block_alloc( ),分配以名字命名的物理内存空间,不管是ServiceExecutive应用程序还是linux kernel都可以通过Octeon_phy_mem_named_block_find()找到这部分内存,实现core之间的共享数据。

Linux kernel也提供了共享内存的机制。主要有mmap(),系统V,Posix共享内存模型等。系统调用mmap()通过映射一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以向访问普通内存一样对文件进行访问。系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面。posix共享内存区首先指定一个名字参数调用shm_open,以创建一个新的共享内存区对象或打开一个以存在的共享内存区对象。然后调用mmap把这个共享内存区映射到调用进程的地址空间。传递给shm_open的名字参数随后由希望共享该内存区的任何其他进程使用。

核间通信方案

如下图所示ARM核和DSP核进行mailbox通信,ARM要发送数据给DSP:

• 1 ARM核先往某个指定的共享内存空间buffer写入数据,然后MAILBOX触发中断和写入关于共享内存空间的地址信息给DSP。

• 2 DSP通过得到mailbox中断的信息读取共享内存空间ARM核发送的buffer数据。

• 3 DSP核读取完数据后将触发mailbox中断给ARM作为回应,告诉ARM核你发送的数据我已经接受完成了。a

图片

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

    关注

    68

    文章

    19079

    浏览量

    228727
  • 寄存器
    +关注

    关注

    31

    文章

    5282

    浏览量

    119764
  • 通信
    +关注

    关注

    18

    文章

    5940

    浏览量

    135759
  • soc
    soc
    +关注

    关注

    38

    文章

    4081

    浏览量

    217717
收藏 人收藏

    评论

    相关推荐

    SoC的通信机制—mailbox介绍

    目前很多芯片都会有几个core,有的是Cortex M0+、M4、M7、A53、A73等等,有的有着2、3、4甚至68
    发表于 08-11 10:51 5143次阅读
    SoC的<b class='flag-5'>核</b><b class='flag-5'>间</b><b class='flag-5'>通信</b><b class='flag-5'>机制</b>—mailbox介绍

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

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

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

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

    关于C6678IPC通信的问题

    程序中判断该位来执行对应的代码。第2个问题:通信能不能可以利用IPCCR和IPCAR中的SRCSx和SRCCx寄存器来实现
    发表于 08-03 07:15

    通信(IPC)解决方案

    (Inter-processor Communication)机制通信的主要目标是,充分利用硬件提供的机制
    发表于 11-03 07:26

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

    本文从对比两颗分立MCU与单芯片双MCU开始(以LPC4350为例),展开介绍了非对称双MCU的基础知识与重要特点。接下来,重点介绍了通信
    发表于 03-26 15:31 3593次阅读
    非对称双<b class='flag-5'>核</b>MCU基础知识及<b class='flag-5'>核</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>

    一种基于Mailbox机制的多核处理系统

    基于FPGA的嵌入式应用在近几年来作为一个比较新颖的课题,本文在研究各种通信机制的基础上,提出了一种基于Mailbox
    发表于 11-22 17:31 1.3w次阅读

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

    本文从对比两颗分立MCU与单芯片双MCU开始(以LPC4350为例),展开介绍了非对称双MCU的基础知识与重要特点。接下来,重点介绍了通信
    的头像 发表于 03-13 15:47 5133次阅读
    非对称双<b class='flag-5'>核</b>MCU基础知识及<b class='flag-5'>核</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>

    Jacinto7 TDA4VM处理器的通信解决方案

    (Inter-processor Communication)机制通信的主要目标是,充分利用硬件提供的机制
    的头像 发表于 07-01 12:04 8479次阅读
    Jacinto7 TDA4VM处理器的<b class='flag-5'>核</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>解决方案

    Jacinto™︎ 7通信解决方案

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

    Jacinto 7通信解决方案

    (Inter-processor Communication)机制通信的主要目标是,充分利用硬件提供的机制
    的头像 发表于 03-16 09:19 1128次阅读
    Jacinto 7<b class='flag-5'>核</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>解决方案

    进程通信机制有哪些

    比较难,Linux内核提供了多种进程通信机制。 同一个进程的不同模块(譬如不同的函数)之间进行通信都是很简单的,譬如使用全局变量等。 通常情况下,大部分的程序是不要考虑进程
    的头像 发表于 07-21 11:23 874次阅读
    进程<b class='flag-5'>间</b><b class='flag-5'>通信</b>的<b class='flag-5'>机制</b>有哪些

    SoC通信实现机制之mailbox中断

    目前很多芯片都会有几个core,有的是Cortex M0+、M4、M7、A53、A73等等,有的有着2、3、4甚至68
    的头像 发表于 09-05 17:29 1553次阅读
    SoC<b class='flag-5'>核</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>的<b class='flag-5'>实现</b><b class='flag-5'>机制</b>之mailbox中断

    通信(IPC)的目标和实现机制

    (Inter-processor communication)来通信,进行数据的交互。 通信
    的头像 发表于 09-13 17:32 3007次阅读
    <b class='flag-5'>核</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>(IPC)的目标和<b class='flag-5'>实现</b><b class='flag-5'>机制</b>

    如何实现一套linux进程通信机制

    我们知道linux的进程的通信的组件有管道,消息队列,socket, 信号量,共享内存等。但是我们如果自己实现一套进程通信
    的头像 发表于 11-10 14:56 593次阅读
    如何<b class='flag-5'>实现</b>一套linux进程<b class='flag-5'>间</b><b class='flag-5'>通信</b>的<b class='flag-5'>机制</b>