有网友在直接使用我们的以太网教程的例子进行调试时候,出现打开Wireshark的情况下,上位机软件能够收到UDP报文,关闭wireshark就收不到报文的情况。该情况,经过我们测试分析,已经找到了合理的解释,以下为调试和分析说明:
1、测试程序:udp_send_fifo_test 2、测试系统:win7 64bit win10 64bit 3、相关设置: a:修改电脑网卡地址为192.168.0.3 b:修改电脑网卡网关为192.168.0.1
上位机设置: 本地IP地址:192.168.0.3 本地端口号:6000
点击连接之后,如果收不到数据,手动将上位机目标主机、目标端口设置为192.168.0.2、5000,然后点击一下发送按钮,上位机就能开始持续收到数据。
经过测试,两台电脑,两个上位机软件:NetAssist、TCPUDPDebug102_Setup
由于发送数据太快,上位机无法及时显示接收到的数据,会卡死,此时可以对程序做如下修改,降低FPGA发包速度: eth_send_test.v文件中 266行改为: reg [23:0]delay_cnt;,将原本的9改为23. 310行改为:if(delay_cnt < 24'hfffff0)begin,将原本的255改为24’hfffff0;
使用NetAssist软件无法接收到数据,需要手动指定目标IP和端口号是因为该软件没有自动识别功能,加上全FFFFF的MAC地址,无法绑定ARP,所以这个软件无法实现,而使用TCPUDPDebug102由于可以直接在设置链接时候指定目标地址和IP,就能够一连接就收到数据。 有网友表示使用某友商提供的程序能够成功,大概是因为他们的程序属于回环,而且没有用全FFF的Mac地址,所以ARP有效,能够自动识别。只要是全FFF的MAC地址,使用NetAssist理论就会有这个问题,而使用能够直接指定目标IP和端口号的软件,就没问题。两个软件已经随压缩包一起发送。由于这个例子是在我们的一步一步写以太网协议栈的教程中的,并不属于回环操作,所以无法匹配上ARP的设定,自然会出现这种现象。
|