RapidIO系统通信与寻址机制解析
1. 消息操作
消息排队有一种更具扩展性的方法,即采用两级方法。若要实现并发操作,就需要多个结构。其中,FIFO 是一个固定大小的循环队列,消息帧的大小等于系统中接收器所能接受的最大消息操作大小。和接收端一样,出站插槽可以是虚拟的,任意字母编号都能由任意字母插槽处理。
当本地处理器要发送消息时,会按以下步骤操作:
1. 将消息存储在本地内存中。
2. 把消息帧描述符(MFD)写入出站邮箱端口,该端口会将其写入出站邮政 FIFO 头指针所指示的位置。
3. 增加头指针。
这种方法的优势在于软件可以在本地内存中存储一个或多个预设消息。当需要向特定端点传达事件时,只需将相应消息帧的地址写入出站邮箱,出站邮箱就会生成消息事务并完成操作。
如果出站头指针和尾指针不相等,就表示有消息等待发送。此时,出站邮箱端口会读取出站尾指针所指向的 MFD,然后减少该指针(这可能会引发一次内存读取,以预取下一 MFD)。接着,硬件会利用 MFD 中存储的信息读取消息帧,将其打包并传输给接收器。若有硬件支持,通过扩展出站消息队列中的字母插槽区分,就可以并发传输多条消息。
若空闲列表的头指针和尾指针相同,说明 FIFO 为空,没有更多 MFD 需要处理。下溢情况是致命的,因为这表明系统行为异常,该信息也可作为状态寄存器的一部分。
由于出站和入站硬件是独立的实体,更复杂的出站邮箱可以通过简化消息描述符的复杂度,与较简单的入站邮箱进行通信,反之亦然。软件可以在系统初始设置时确定设备的能力,设备消息硬件的能力存储在端口配置寄存器中。
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



