SoC的核间通信机制-mailbox介绍_第1页
SoC的核间通信机制-mailbox介绍_第2页
SoC的核间通信机制-mailbox介绍_第3页
SoC的核间通信机制-mailbox介绍_第4页
SoC的核间通信机制-mailbox介绍_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页SoC的核间通信机制—mailbox介绍

正文

目前很多芯片都会有几个c(or)e核,有的是CortexM0+、M4、M7、A53、A73等等,有的有着2核、3核、4核甚至6核8核,不同的核的主频支持度不一样,适用的具体应用场景也不同,因此需要IPC(Inter-processorcommun(ic)ation)来核间(通信),进行数据的交互。

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

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

Mailbox中断基于共享内存的消息队列

封装-(VR)ING-解析的过程:

1、应用程序向给定目的地((CPU)、端点)发送消息

2、消息首先从应用程序复制到两个CPU之间使用的VRING。此后,IPC驱动程序在硬件邮箱中发布VRINGID。

3、这会触发目标CPU上的中断。在目标CPU的ISR中,它提取VRINGID,然后根据VRINGID检查该VRING中的所有消息。

4、如果收到消息,它从VRING中提取消息并将其放入目标RPMSG端点队列中。然后触发在此RPMSG端点上阻止的应用程序。

5、应用程序处理接收到的消息,并使用相同的RPMSG和VRING机制在相反方向回复发送方CPU。

HardwareMailbox

硬件邮箱主要用于提供具有小的32位有效负载的中断事件通知。

VRING使用硬件邮箱在目标CPU上触发中断。每个邮箱包含16个单向HW队列,最多可连接4个通信用户或CPU。

J721ESoC有12个硬件邮箱实例。即12x16个硬件邮箱队列。

(硬件邮箱的逻辑框图)

MailboxandVRING

邮箱本质上充当一个非常小的硬件队列,其中包含VRINGID。

VRING是共享内存中的SW队列,保存两个CPU之间传递的实际消息。当收到中断时,邮箱消息会告知从哪个VRING出列消息。

VRINGID=0(te)llstolookattheVRINGfromsendertoreceiverVRINGID=1tellstolookattheVRINGfromreceivertosender

散文

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

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

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

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

Mailbox中断;基于共享内存的消息队列;POW+Group;FAU;支持原子的读,写,fetchand(ad)d操作。每个core有一个相应的32bit的mailbox寄存器,每一位可被单独地设置或清零。这对于core间的中断非常有用,任意core可直接通过其它core的mailbox对其它core发出中断。当mailbox被置位时,相应core的中断寄存器也同时被置位,软件可实现其中断处理。

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

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

核间通信方案

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

ARM核先往某个指定的共享内存空间buffer写入数据,然后MAILBOX触发中断和写入关于共享内存空间的地址信息给DSP。DSP通过得到mailbox中断的信息读取共享内存空间ARM核发送的buffer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论