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.
在6678evm平台上,用GbE朝PC发包,PC端用wireshark抓包。
DSP发包规则如下:
每次触发,发8个包,每个包512Byte(包含包头共526Byte),每个包内容为128个浮点型常量x,x每次触发递增1。
触发信号10Mhz,用wireshark发现收包顺序在某些地方会出现颠倒。
我用winpcap编写了一个绘图软件,如果发包收包顺序正确,则PC端显示应该呈现阶梯状上升的曲线,每个阶梯宽度为8个包宽度(去除包头)
软件绘出的曲线整体上正确,但是局部有包顺序颠倒的情况,如下图所示
我专门查看了GbE TxQ中desc对应的buff,发现其内部每个包的顺序在内存上顺序是完全正确的,但是在pc端显示就出现了问题。
请问这样的情况一般是是什么原因造成的呢?wireshark用过的朋友知道这个软件抓包会出现这样的情况吗?
问题解决了,但是不知道具体是为什么:
我发的帧格式是参照ge例程的:
-------------------------------------------------------------------------------------------------------------------------
DEST_MAC_ADDRESS + SRC_MAC_ADDRESS + IPV4(0X0800) + DATA
(6 BYTES) (6BYTES) (2BYTES) (512 BYTES)
---------------------------------------------------------------------------------------------------------------------------
后面有512 byte的数据(大小随机),帧的总大小为526byte,发送之后,pc端接受发现顺序不对,认为有重发导致包之间顺序被打乱。
于是我在frame header后面又加了一个4byte的计数器作为包的标号,大小从0到31循环技术,
--------------------------------------------------------------------------------------------------------------------------------------
DEST_MAC_ADDRESS + SRC_MAC_ADDRESS + IPV4(0X0800) + INDEX(0~31) + DATA
(6 BYTES) (6 BYTES) (2 BYTES) (4 BYTES) (512 BYTES)
----------------------------------------------------------------------------------------------------------------------------------------------
然后打算再pc端的程序上按照这个index对包排序。
但是发现当增加了这个INDEX之后,pc端收包顺序就正常了(直接收包,没有排序)。。。。。。
是不是以太网header后面的数据也是有格式要求的,而随机数据中某些数据导致了格式上出了问题,添加了index之后使随机数据位置后移,排除了这种可能性?