消息传递单元(MU)模块通过 MU 接口传递消息(如数据、状态和控制),使 SoC 中的两个处理器能够进行通信和协调。MU 还能让一个处理器使用中断向另一个处理器发出信号。
由于 MU 管理处理器之间的信息传递,因此 MU 使用不同的时钟(来自不同外设总线的每一端)。因此,MU 必须同步从一侧到另一侧的访问。MU 使用两组匹配寄存器(面向处理器 A,面向处理器 B)实现同步。
消息类型
以下是发送信息的示例:
- 传递短信息: 发送寄存器可用于传递长度为一至四个字的短信息。
长度从一字到四字不等。例如,当需要四字信息时,只需在接收端设置其中一个寄存器的相应中断使能位;信息的前三个字写入中断被屏蔽的寄存器,第四个字写入另一个寄存器(在接收端触发中断)。 - 传递帧信息: 对于写入共享系统内存的长信息,发送寄存器可用于传递帧信息。这些帧信息通常包括起始地址、字数以及信息类型代码。
- 传递事件通知和请求: 不包含数据字的事件和请求可使用一般中断从处理器 B 向处理器 A 发出信号,例如确认从共享系统内存中读取了长信息。
- 传递固定长度数据 可将固定长度的格式化数据写入共享内存的预定位置。一个处理器可以使用一般中断(处理器 A 或处理器 B)向另一个处理器发出数据就绪的信号。
- 传递通告: 处理器可使用这三个标志向其他处理器宣布其当前的程序状态或其他广告牌信息。
数据传输过程
首先,处理器B发出DMA请求以启动数据传输。DMA确认后,开始将数据从处理器B的位置传输到共享内存。传输完成后,DMA中断处理器B以示意传输结束。然后,处理器B通过MU B端传输寄存器向处理器A发送信息,通知处理器A共享内存中有新的数据包数据,并包含命令、位置和数据长度。接着,处理器A接收到中断,开始读取和处理共享内存中的数据。处理完成后,处理器A将结果写入一个单独的缓冲区,并通过MU A端传输寄存器通知处理器B传输完成。最后,处理器A发送中断给处理器B,表示需要更多数据,处理器B接收中断并开始新一轮的数据传输请求。