我的2个dsp 6670通过switch CPS 1432相连,同时连接的还有FPGA。
配置好switch的路由后,先后运行2个dsp,跑的是KeyStone_SRIO的例子,外部模式,能够跑通。但是,如果把作为master的dsp重新运行,会卡在KeyStone_SRIO_match_ACK_ID函数这个地方。
通过分析,我发现以下代码返回的uiRemote_In_ACK_ID不是另一个dsp的ACK_ID,所以导致出问题。
//send a "restart-from-error" commond, request the ACK_ID of the other side
gpSRIO_regs->RIO_SP[uiLocalPort].RIO_SP_LM_REQ=4;
//wait for link response
while(0==(gpSRIO_regs->RIO_SP[uiLocalPort].RIO_SP_LM_RESP>>
CSL_SRIO_RIO_SP_LM_RESP_RESP_VALID_SHIFT))
asm(" nop 5");
uiRemote_In_ACK_ID= (gpSRIO_regs->RIO_SP[uiLocalPort].RIO_SP_LM_RESP&
CSL_SRIO_RIO_SP_LM_RESP_ACK_ID_STAT_MASK)>>
CSL_SRIO_RIO_SP_LM_RESP_ACK_ID_STAT_SHIFT;
那么,我想问一下,在有switch的情况下,如何正确返回另一个dsp的ACK_ID呢?这跟2个dsp直连好像有点不一样。