TI中文支持网
TI专业的中文技术问题搜集分享网站

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方式写入数据。

Ryan BL:

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

论坛c6000多核资源的推荐里面,也有gel调式srio的,可以随时打srio错误;

user4787357:

经过最近的调试已经能够实现了DSP和FPGA之间的互相写入数据时,1X3.125G bps
DSP的DDR3 CACHE使能条件下,会有问题:
FPGA SWRITE写入到DSP 的 DDR30x80000000开始位置往下写,大量写入都没有问题
DSPSWRITE 发送数据给FPGA 端,数据源是自己产生的规律数-计数器放在DDR3内部(0xA0000000开始位置),但是发送到线路上后,FPGA拿CHIPSCOPE抓到的信号发现DSP发出来的计数器存在误码,例如40414243会变成40454243,这种误码很多。

怀疑是线路信号质量问题,但是发现一旦把DSP DDR3的 CACHE使能关闭后,同样的程序,DSP往FPGA发的数据就完全正确,长时间测试都没问题。感觉是DSP DDR3数据没有很好的同步到SRIO的线路上。
请问TI的专家,这个会是CACHE一致性导致的么,这个还需要手工维护吗。

Ryan BL:

回复 user4787357:

以后这样的建议新开个问题。不然ti的在线专家很可能看不到。
你这个问题我就帮你肯定下:是!

user5774529:

回复 user4787357:

您好,我最近在用官方的SRIO例程调试6678与FPGA的通信,能具体讲下如何修改的SRIO例程吗,我现在改了no_loopback,link rate = 3.125G,1XLaneA,但是completion code = 4

Ryan BL:

回复 user5774529:

建议新开帖子,不然‘ti看不到。
你可以看看手册上4是什么错误,对照分析之。

赞(0)
未经允许不得转载:TI中文支持网 » 6678 SRIO directIO swrite发送失败
分享到: 更多 (0)