This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

KeyStone_SRIO_match_ACK_ID的问题。



我的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直连好像有点不一样。