大家好 问一下假设DSP1 通过LSU给DSP2 发数 同时也发门铃
例如这样:
cfg.Address.RapidIOAddress.LSB = SRIOBuffer;
cfg.Address.DSPAddress = SRIOBuffer;
cfg.ByteCount = BUFFER_SIZE * 4;
cfg.ID.Port = SRIO_Port0;
cfg.ID.Dest = DEVICE_ID1_16BIT;
cfg.ID.Size = SRIO_ID_16Bit;
cfg.PacketType = SRIO_NWrite;
cfg.DoorBell.Enable = TRUE;
cfg.DoorBell.Info = SRIO_DoorBell_Message_NWrite_Finished;
// 等待 LSU 可用
while(SRIOLSUFullCheck(LSU) != 0);
// 传输数据
SRIODirectIOTransfer(LSU, &cfg);
那么DSP2收到门铃中断 能否作为DSP2收数完成的标志???
也就是说在上面这种情况下 门铃和数据是一起到达 还是先后到达?
skysteed:
For FType != 10
“0”→没有门铃信息,需要在包的最后发出
“1”→门铃信息有效
如果不需要响应,在发送最后一个片段后发送门铃
如果需要响应,则在接收到所有响应之后,在没有错误的情况下生成一个带有Drbll_Info的门铃
如果需要响应,如果收到错误的响应,门铃将不会产生。
看手册 门铃应该在包的最后发出
但是 上面提到的响应什么意思?是DSP1 给DSP2发完数据 DSP2给DSP1自动回相应数据接收完成+没有错误的信息么?
Shine:
回复 skysteed:
是的,doorbell的response一般是DONE ,DSP2收到DSP1的数据后的回应。具体可以看一下SRIO协议。
www.rapidio.org/…/spec_interconnect.pdf
skysteed:
回复 Shine:
哦 谢谢 明白了 就是说
Drbll_val如果设为1 dsp2在接收到所有响应之后,在没有错误的情况下 必然生成一个带有Drbll_Info的门铃中断