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.

6678 SRIO directIO swrite发送失败

TI专家你好,在使用6678与FPGA之间SRIO通信时测试环境如下,遇到了SWRITE发送卡死的情况,请专家指导下该如何排查,具体应从查哪些寄存器状态

测试环境:

6678与FPGA之间SRIO  使用1x 3.125Gbps     6678自环已通过,fpga配置完成后,双方的链路建立成功 ,6678的pork起来了,port okbit置位了,FPGA端的port 和link也都建立成功。

FPGA通过SWRITE方式往6678写数据成功,6678的DDR3内可看到发过来的数据、无误。6678使用的keystone 开发包里的教程改写的 SRIO_2DSP_TEST();

6678往FPGA端SWRITE方式发送数据,存在问题:

单次LSU传输时配置参数如下:

类型                                              源地址            目的地址  数据长度(字节)

SRIO_PKT_TYPE_SWRITE,   0x80000000  ,     0x00000000 ,  256

有以下现象,

1:6678发包时会固定卡死,调用KeyStone_SRIO_LSU_transfer 发送两次后程序会一直卡死在KeyStone_SRIO_wait_LSU_completion函数里。

2:发送成功的两次,FPGA端可以抓到线路上的数据确认是DSP发出的数据,6678可看到调试打印出来的信息里,complete code=1,6678自环时该完成码是0。

此外,KeyStone_SRIO_match_ACK_ID(0, DSP1_SRIO_BASE_ID, 0)作用是什么,是必须的么,我测试过如果在初始化SRIO时使用该函数,在port up后,还没有进行LSU传输时,有一定的概率程序一直卡死在KeyStone_SRIO_wait_LSU_completion函数里出不来,我就把该函数屏蔽了,并不影响FPGA往DSP swrite方式写入数据。

  • srio的stk有error—capture,可以在出错时打出错误信息;一般根据出错信息就好查;

    论坛c6000多核资源的推荐里面,也有gel调式srio的,可以随时打srio错误;
  • 经过最近的调试已经能够实现了DSP和FPGA之间的互相写入数据时,1X 3.125G bps
    DSP的DDR3 CACHE使能条件下,会有问题:
    FPGA SWRITE写入到DSP 的 DDR3 0x80000000开始位置往下写,大量写入都没有问题
    DSP SWRITE 发送数据给FPGA 端, 数据源是自己产生的规律数-计数器放在DDR3内部(0xA0000000开始位置),但是发送到线路上后,FPGA拿CHIPSCOPE抓到的信号发现DSP发出来的计数器存在误码,例如40414243会变成40454243,这种误码很多。

    怀疑是线路信号质量问题,但是发现一旦把DSP DDR3的 CACHE使能关闭后,同样的程序,DSP往FPGA发的数据就完全正确,长时间测试都没问题。感觉是DSP DDR3数据没有很好的同步到SRIO的线路上。
    请问TI的专家,这个会是CACHE一致性导致的么,这个还需要手工维护吗。
  • 以后这样的建议新开个问题。不然ti的在线专家很可能看不到。
    你这个问题我就帮你肯定下:是!
  • 您好,我最近在用官方的SRIO例程调试6678与FPGA的通信,能具体讲下如何修改的SRIO例程吗,我现在改了no_loopback,link rate = 3.125G,1XLaneA,但是completion code = 4
  • 建议新开帖子,不然‘ti看不到。
    你可以看看手册上4是什么错误,对照分析之。
x 出现错误。请重试或与管理员联系。