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.

C6678 用GbE朝PC发包顺序为什么会出错

在6678evm平台上,用GbE朝PC发包,PC端用wireshark抓包。

DSP发包规则如下:

        每次触发,发8个包,每个包512Byte(包含包头共526Byte),每个包内容为128个浮点型常量x,x每次触发递增1。

       触发信号10Mhz,用wireshark发现收包顺序在某些地方会出现颠倒。

       我用winpcap编写了一个绘图软件,如果发包收包顺序正确,则PC端显示应该呈现阶梯状上升的曲线,每个阶梯宽度为8个包宽度(去除包头)

软件绘出的曲线整体上正确,但是局部有包顺序颠倒的情况,如下图所示    

我专门查看了GbE TxQ中desc对应的buff,发现其内部每个包的顺序在内存上顺序是完全正确的,但是在pc端显示就出现了问题。

请问这样的情况一般是是什么原因造成的呢?wireshark用过的朋友知道这个软件抓包会出现这样的情况吗?

  • 怀疑有重传,你看下wireshark是不是有重传标记

    pc对突发大量数据的接收能力不强的,dsp满速发大量数据一定会导致丢包或者重传

  • 从pc以太网直接抓包,没有使用tcpip协议,以太网也会有重传机制吗?

     

     

  • DSP发送一定是顺序的,问题可能是PC端

  • 问题解决了,但是不知道具体是为什么:

    我发的帧格式是参照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之后使随机数据位置后移,排除了这种可能性?

x 出现错误。请重试或与管理员联系。