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.

C6657使用SRIO的DirectIO方式发送NWRITE_R包数据重复问题



使用描述:C6657与FPGA使用SRIO进行连接,C6657每次通过DirectIO方式发送8个字节的NWRITE_R包数据给FPGA,其中DSP数据在DDR3中,在MAR中配置该段地址为非Cache,发送时使用固定的DSP内存地址,发送前修改该固定地址的内容,填充SRIO_LSU_Transfer后调用KeyStone_SRIO_LSU_transfer发起传输,并使用对应SRIO_LSU_Transfer对象调用KeyStone_SRIO_Wait_LSU_completion等待完成,之后再发起下一次传输,相邻两次传输发送的数据均不相同。

问题:偶尔会出现FPGA收到相邻两包数据相同的问题

测试:1、增加发送间隔为1us,概率降低到最长一天才出现;

           2、DSP写完数据到DDR后调用Cache_wb进行Cache回写操作,测试2天未出现问题;

           3、简化系统为只做SRIO发数据任务,连续测试2天未出现问题;

           4、原程序不变,只打开DSP发送地址的Cache,FPGA连续收到相同数据,系统完全无法正常工作,与未开Cache对比相差极其明显;

简单分析:由测试1和2怀疑是Cache问题,但已经回读对应MAR寄出去确认该段地址已经成功设置为非Cache的;而测试3理论会增大Cache引起问题的概率,但事实却没有,测试4打开Cache与原关闭的程序对比明显,说明了关闭DDR的Cache的效果是明显而且有用的,测试3和4基本否定了由于DDR的Cache引起。以上测试推论有相互矛盾的地方,无法对问题原因下结论。目前只能使用测试2的方案临时解决,无法确保长期运行下的稳定,亦无法确认是否还存在类似问题,希望TI官方分析原因给予技术支持,谢谢。