TI论坛
直播中

辛文斌

7年用户 142经验值
私信 关注
[问答]

6455SRIO,800字节出错 请问是什么原因?

你好
我现在使用两片6455通过srio直连通信,1lane模式的。我要传输的数据量很大,根据文档每次最大数据为4KB,所以我使用了for循环的模式。
程序使用了dskV2提供的master/slave程序,传输时能后,通过查询LSU6寄存器中的busy位判定是否传输完成。每包0x600字节。传第一包是数据0x600字节全对,但是第二包的0x600字节只对了前0x200字节。以后的传输都能运行完成,但数据都不对了。我试着改变每次传输的大小,每次穿0x100字节,发现前8包数据都对,即还是前0x800字节对,后面的还是不对。什么可能会造成这种奇怪的现象?
我理解既然是查询式的,每包之间都是等同的,接收完成才会运行下一包,怎么会跟0x800这么一个固定的大小有关系??

回帖(3)

辛文斌

2018-8-7 07:40:26
我发现问题可能是这样:我用了1X模式,每包数据的有效负载是80字节,单个信息块最多发送16包,出现了lsu6寄存的CC=111b,即
 

问题1:可是我发送成功的数据量是0x800字节并不是80*16字节
问题2:这种cc=7的问题怎么解决??
举报

李萌

2018-8-7 07:51:50
引用: yhxcftp 发表于 2018-8-7 07:40
我发现问题可能是这样:我用了1X模式,每包数据的有效负载是80字节,单个信息块最多发送16包,出现了lsu6寄存的CC=111b,即
 

1. 请问你的操作是读操作还是写操作,另外packet的优先级是多少,此时是否还有其他优先级的packet传输
2.cc=7意味着你所要传输的包优先级比较低,SRIO硬件没有足够的fifo来发送你要传输的数据,需要重传。SRIO在配置时会通过PER_CTL寄存器来控制每种优先级预留的fifo,你可以尝试将发送packet的优先级调高试试,或者修改优先级配置寄存器。
举报

辛文斌

2018-8-7 07:57:00
引用: dechun28448 发表于 2018-8-7 07:51
1. 请问你的操作是读操作还是写操作,另外packet的优先级是多少,此时是否还有其他优先级的packet传输
2.cc=7意味着你所要传输的包优先级比较低,SRIO硬件没有足够的fifo来发送你要传输的数据,需要重传。SRIO在配置时会通过PER_CTL寄存器来控制每种优先级预留的fifo,你可以尝试将发送packet的优先级调高试试,或者修改优 ...

谢谢你的回答。1、我使用的是写操作,优先级是2。同一时刻没有其他的传输正在进行。我尝试了修改了优先级,现象类似。2、我想你说的修改是per_set_cntl寄存器。预留buffer我也尝试修改了。可是没有效果。附件里是我的测试工程,请帮助我找一下问题。再次感谢
举报

更多回帖

发帖
×
20
完善资料,
赚取积分