SoC的核间通信机制—mailbox介绍
正文
目前很多芯片都会有几个core核,有的是Cortex M0+、M4、M7、A53、A73等等,有的有着2核、3核、4核甚至6核8核,不同的核的主频支持度不一样,适用的具体应用场景也不同,因此需要IPC(Inter-processor communication)来核间通信,进行数据的交互。
(相关资料图)
核间通信(IPC)的主要目标是:充分利用硬件提供的机制,实现高效的CORE间通信;给需要CORE间通信的应用程序提供简洁高效的编程接口。
根据所使用的硬件特性,核间通信的实现机制有:
Mailbox中断基于共享内存的消息队列封装-VRING-解析的过程:
1、应用程序向给定目的地(CPU、端点)发送消息
2、消息首先从应用程序复制到两个CPU之间使用的VRING。此后,IPC 驱动程序在硬件邮箱中发布 VRING ID。
3、这会触发目标 CPU 上的中断。在目标 CPU 的 ISR 中,它提取 VRING ID,然后根据 VRING ID 检查该 VRING 中的所有消息。
4、如果收到消息,它从VRING中提取消息并将其放入目标RPMSG端点队列中。然后触发在此 RPMSG 端点上阻止的应用程序。
5、应用程序处理接收到的消息,并使用相同的RPMSG 和VRING 机制在相反方向回复发送方CPU。
Hardware Mailbox
硬件邮箱主要用于提供具有小的 32 位有效负载的中断事件通知。
VRING 使用硬件邮箱在目标 CPU 上触发中断。每个邮箱包含 16 个单向 HW 队列,最多可连接 4 个通信用户或 CPU。
J721E SoC 有 12 个硬件邮箱实例。即 12x 16 个硬件邮箱队列。
(硬件邮箱的逻辑框图)
Mailbox and VRING
邮箱本质上充当一个非常小的硬件队列,其中包含 VRING ID。
VRING 是共享内存中的 SW 队列,保存两个 CPU 之间传递的实际消息。当收到中断时,邮箱消息会告知从哪个 VRING 出列消息。
VRING ID=0 tells to look at the VRING from sender to receiverVRING ID=1 tells to look at the VRING from receiver to sender
散文
mailbox其实是多核处理器soc上,核与核之间互相发中断的机制,由于核与核之间可能存在不同的业务,故硬件上设计分配一两个中断已经无法满足业务的需求,软件拓展起来很困难,所以mailbox可以理解为软件可自由定义的中断模块。
用于在片上处理器之间通信的一种mailbox队列中断机制,mailbox队列中断机制允许软件通过一组寄存器和关联的中断设置和得到信息在二个处理之间建立通信渠道。
核间通信的主要目标是:充分利用硬件提供的机制,实现高效的CORE间通信;给需要CORE间通信的应用程序提供简洁高效的编程接口。
根据所使用的硬件特性,核间通信可能的实现机制有:
Mailbox中断;
基于共享内存的消息队列;
POW + Group;
FAU;支持原子的读,写,fetch and add操作。
每个core有一个相应的32bit的mailbox寄存器,每一位可被单独地设置或清零。这对于core间的中断非常有用,任意core可直接通过其它core 的mailbox对其它core发出中断。当mailbox被置位时,相应core的中断寄存器也同时被置位,软件可实现其中断处理。
Bootloader支持Octeon_phy_mem_named_block_alloc( ),分配以名字命名的物理内存空间,不管是Service Executive应用程序还是linuxkernel都可以通过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:
ARM核先往某个指定的共享内存空间buffer写入数据,然后MAILBOX触发中断和写入关于共享内存空间的地址信息给DSP。DSP通过得到mailbox中断的信息读取共享内存空间ARM核发送的buffer数据。DSP核读取完数据后将触发mailbox中断给ARM作为回应,告诉ARM核你发送的数据我已经接受完成了。关键词:
责任编辑:meirong
-
SoC的核间通信机制—mailbox介绍
-
行业人士:短期内外糖市延续弱联动趋势
-
航天信息: 公司承建国家税务总局网络安全防护体系建设项目以及网络可信身份体系建设、可信数据交换等项目
-
女子用包占高铁公共座位 称对人过敏网友:对人过敏就不要出门了
-
冬天温暖、夏天“沸腾” 这个7月太“极端”
-
男子支付宝被盗号凭空背债1.3万为解绑支付宝民警帮办45张证明 具体是什么情况?
-
重庆46项电力保供重点工程投用
-
中谷物流(603565)8月10日主力资金净卖出172.45万元
-
住字的组词?(住字组词有哪些词语)
-
安藤裕子歌曲(到哪里可以下载安藤裕子的sha li clothing 到QQ空间里)
-
泸州老窖(000568):8月10日北向资金减持30.51万股
-
中国飞鹤(06186.HK):8月10日南向资金增持487.2万股
-
Epic喜加二:《欧陆风云4》《奥威尔》免费领!
-
巴西央行行长内托:巴西需要采取批准措施以实现财政目标
-
今大禹拟向银行申请不超过2000万贷款 曹文彬及其配偶田珊珊提供担保
-
独行侠补强小德里克-琼斯:1年全额保障合同辅助欧文东契奇
-
国际冬季运动(北京)博览会发布会在京召开
-
激荡电视剧剧情介绍 陆氏三兄妹在上海弄堂里共同成长的故事
-
2023上海松江区教育系统编外用工后勤保障岗位自主招聘公告
-
尼泊尔庆祝世界土著人民国际日
-
国王名宿表示:奥尼尔和科比的湖人2002年的总冠军是自己的!
-
云南红河州委老干部局开展擂台比武展银发先锋风采活动
-
金迪克(688670.SH):公司流感疫苗车间环境已恢复,达到可生产状态
-
甘肃省兰州市2023-08-10 15:45发布雷雨大风黄色预警
-
太原市八音会大赛8月8日晚在娄烦县南区市民广场举办
-
内蒙古兴安盟那达慕开幕 20余万中外游客感受草原文化
-
百度图片库大全(百度图片库)
-
农业农村部:深入实施数字农业项目 形成多元化的投入机制
-
浙江金华:自8月16日不再执行限售限制政策
-
比亚迪全球首家突破500万辆 泪洒现场
-
面板价格持续反弹 或推动液晶电视价格上涨
-
微软添加多种声音选项 微软文本转语音将新增多种声音
-
售价超万元?小米MIX Fold3重新定义折叠屏
-
手机听筒灰尘怎么清理音波(手机听筒灰尘怎么清理)
-
上海建立“黑白名单”机制 加强老楼加梯代建单位监管