你好
我现在使用两片6455通过srio直连通信,1lane模式的。我要传输的数据量很大,根据文档每次最大数据为4KB,所以我使用了for循环的模式。
程序使用了dskV2提供的master/slave程序,传输时能后,通过查询LSU6寄存器中的busy位判定是否传输完成。每包0x600字节。传第一包是数据0x600字节全对,但是第二包的0x600字节只对了前0x200字节。以后的传输都能运行完成,但数据都不对了。我试着改变每次传输的大小,每次穿0x100字节,发现前8包数据都对,即还是前0x800字节对,后面的还是不对。什么可能会造成这种奇怪的现象?
我理解既然是查询式的,每包之间都是等同的,接收完成才会运行下一包,怎么会跟0x800这么一个固定的大小有关系??
sun tom:
我发现问题可能是这样:我用了1X模式,每包数据的有效负载是80字节,单个信息块最多发送16包,出现了lsu6寄存的CC=111b,即
问题1:可是我发送成功的数据量是0x800字节并不是80*16字节
问题2:这种cc=7的问题怎么解决??
sun tom:
回复 Zhan Xiang:
谢谢你的回答。1、我使用的是写操作,优先级是2。同一时刻没有其他的传输正在进行。我尝试了修改了优先级,现象类似。2、我想你说的修改是per_set_cntl寄存器。预留buffer我也尝试修改了。可是没有效果。附件里是我的测试工程,请帮助我找一下问题。再次感谢