IPC 核间通信

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


提示:以下是本篇文章正文内容,下面案例可供参考

一、IPC是什么?

核间通信 IPC(Inter-Process Communication)在多核系统中,由于应用的需求,经常需要各核进行通信。比如,当多个处理器需要共享外设,Memory及各处理器之间互发中断时,IPC(Inter-Processor Communication)即实现此功能。
IPC主要应用于两个方面:发送中断给其他核和核间少量数据的传输

二、工作流程

IPC内部的邮箱可以作为核间不固定的资源,也可以作为一些特殊处理器的固定资源。源处理器可以有多个Mailbox同时并行的发送消息。

IPC的基本工作流程如下:

1、 配置某邮箱的源寄存器,该值由已经分配好的源端处理器的比特位表示,1个比特代表1个核。通信过程中,在邮箱通道使用的情况下,写入此时正在占用邮箱通道的源寄存器的比特位的值表示释放邮箱通道,否则无效,对邮箱操作不产生任何影响。

2、 配置某邮箱的目的寄存器,该值由已经分配好的目的端处理器的比特位表示,1个比特位代表1个核,IPC模块采用三个寄存器完成对目的寄存器的配置,分别为目的设置、目的清除、目的查询寄存器。

3、 配置邮箱通道的模式寄存器及中断屏蔽寄存器,配置相应工作模式与中断屏蔽位;当前系统中手动应答模式对应IPC同步发送方式,且不屏蔽源处理器与目的处理器的中断;自动应答模式对应IPC异步发送方式,不屏蔽目的处理器中断。

4、 配置邮箱数据寄存器,传递必要的数据。

5、 配置MBX_SEND发送寄存器等于源寄存器的值,发出中断到目的核。

6、 目的核收到中断后,配置MBX_ICLR中断清除寄存器清除中断,1个比特对应1个核。

7、 目的核清除中断后,配置MBX_SEND发送寄存器等于目的寄存器,发出应答中断,1个比特对应1个核;当邮箱通道使能自动应答模式功能时,即使用异步发送方式发送消息时,目的处理器收到中断,处理完毕清除中断时逻辑会同时自动设置MBX_SEND发送寄存器发应答中断给源处理器,此时目的端可省略回复应答中断这一动作。

8、 源端收到应答中断,配置MBX_ICLR中断清除寄存器清除中断。

9、 源端选择继续使用邮箱或者释放邮箱。

核间通信主要是靠共享内存和中断机制实现的,在每一次IPC通信的过程中,软件上均涉及到上述配置,完成正常的处理器间的消息传递。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部