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.

TMS320C6678: 如何修复SRIO出现的传输错误?

Part Number: TMS320C6678


您好,

        自制板上的DSP和FPGA通过SRIO进行通讯,配置为2x,DSP收,FPGA发。有时候上电能够正常通讯,但偶尔一上电就收不到FPGA发过来的数。

        此时FPGA显示trdy信号一直拉低,tvalid信号一直拉高,没有tlast信号,好像是FPGA一直在发,停不下来,同时也收不到DSP的回应?(这个不太理解) 

        DSP这边我查看了SPn_ERR_STAT寄存器,bit8一直置1和清零,bit9则置1,显示有传输错误,然后又看了ERR_DET寄存器,bit17置1,显示收到了超过276bytes的数据。

        碰到这种传输错误,DSP要怎么处理?复位能够解决这个问题吗?

        

        我尝试:判断SPn_ERR_STAT寄存器,出现错误就调用KeyStone_SRIO_soft_reset()函数去复位,可是也没啥用,如果复位完再对SRIO重新初始化,DSP直接跑飞。

        可以通过什么办法解决传输错误呢?如果复位可以解决,又要怎么复位呢?为什么KeyStone_SRIO_soft_reset()不行,重新初始化还跑飞呢?

        谢谢各位大神帮忙!

  • 您好,

           在英文论坛里找到一个帖子,里面说了两种复位的办法:

           1.一种是对端口的复位。

            gpSRIO_regs−>BLOCK_ENABLE_STATUS[5].RIO_BLK_EN=0;

    gpSRIO_regs−>BLOCK_ENABLE_STATUS[5].RIO_BLK_EN=1;

    能看到执行完第1句时,SPn_ERR_STAT变成1,但是执行完第二句后,寄存器值仍是770,显示有传输错误。

    不知道我理解得对不,这算不算对端口进行了复位。复位后为啥还是不管用。

          2.另一种是复位Heavy plus sign重新初始化。

    对PLM_SPn_IMP_SPEC_CTL的bit25置位,然后需要重新初始化。

    但是之前我重新初始化跑飞,我还没尝试这种方法。

  • 参考以下帖子看一下是否有帮助。

    https://e2echina.ti.com/support/processors/f/processors-forum/18837/srio-ti-fae

    如果无法帮助你解决问题,请到英文论坛咨询,会有相关专家给你支持。