大家好,
我在用Xilinx V6向C6670发送Doorbell包。
现在出现的问题是:V6向C6670发了64次Doorbell以后,C6670再也无法响应来自V6的Doorbell了,DOORBELL[n]_ICSR也观察不到对应位被set了。
代码就不贴了。
现在我怀疑的一个可能的问题是:V6的程序是没发一次Doorbell,srcID就自动加1,而C6670只能接收64种srcID的doorbell,超过了64,就不再响应了。
希望大家帮我分析一下,是不是这样的问题。V6程序不是我写的,要是确定是这个问题,我再让别人更改。
谢谢!!
Feng Jin:
找到原因了,是V6发出来的Doorbell包的sourceID不是它本身,V6的deviceID为0xAA,但是发送出来的包中的sourceID为0xFF。
导致DSP接收到Doobell包以后对外回复一个DONE包,而DONE包无法到达目的地。
如此累计64次以后,DSP的SRIO不再接收Doorbell包什么的,并且对外发送Doorbell包也卡在LSU completion中断起不来。
然后,改了FPGA程序,让包中的sourceID为其deviceID,0xAA。则一切正常。
但是还是有一点不明白的是,DSP是如何知道自己发送的DONE包没有到达目的地,并且累计64次以后就失败了??
Feng Jin:
回复 Brighton Feng:
明白了!多谢!