GD32307C 以太网数据接收有丢包

[复制链接]
1575|14
 楼主| shaoyangv 发表于 2022-8-8 15:54 | 显示全部楼层 |阅读模式
本帖最后由 shaoyangv 于 2022-8-8 16:07 编辑

    在使用GD32307C-EVAL开发板,基础代码使用官网下载的例程“GD32F30x_Demo_Suites_V2.4.1\GD32307C_EVAL_Demo_Suites\Projects\22_ENET\Projects\Raw_webserver”。PC向开发板发送数据,开发板过滤接收到的数据,把指定目的IP的数据进行转发。但如果PC连续向开发板发送数据,就会出现接收丢包的情况。
Snipaste_2022-08-08_15-45-07.png
上图为PC端发送数据的抓包截图。PC在向板卡连续发送数据时,绿框标识的数据可正常接收,红色内的数据则会丢失。
有哪位大佬遇到过类似的问题,或者可以给一些调试思路,十分感谢。

补充说明
1. 关于数据丢失数据包的定位,通过打印TCP数据包中的“Sequence Number”字段来确定。
2. 上述截图中,PC的IP地址为192.168.131.2,GD32开发板的IP为192.168.131.1。
3. 此现象稳定复现,且数据包丢失的位置是固定的,每次都是连续10包数据的后5包丢失。
4. 在以太网中断函数"void ENET_IRQHandler(void)"添加调试信息,丢失的包未触发此函数。
lifeforrent 发表于 2022-8-9 10:58 | 显示全部楼层
请问楼主,你在PC端具体怎么操作的,可以描述的尽可能详细些,我复现下问题
 楼主| shaoyangv 发表于 2022-8-9 15:25 | 显示全部楼层
lifeforrent 发表于 2022-8-9 10:58
请问楼主,你在PC端具体怎么操作的,可以描述的尽可能详细些,我复现下问题 ...

GD32开发板作为透传模块,连接着PC和服务器。GD32把接收到的数据修改MAC和IP层地址数据,实现类似NAT功能,网络连接如下图所示。帖子中截图为wireshark抓包,PC向服务器进行iperf3打流测试。 Snipaste_2022-08-09_15-19-40.png
lifeforrent 发表于 2022-8-9 16:07 | 显示全部楼层
试试中断接收方式,或者关闭硬件校验使用软件校验。
 楼主| shaoyangv 发表于 2022-8-9 17:52 | 显示全部楼层
lifeforrent 发表于 2022-8-9 16:07
试试中断接收方式,或者关闭硬件校验使用软件校验。

好的,多谢

另外我从芯片手册看到支持发送“暂停帧”实现流控,我也尝试下这方法。
 楼主| shaoyangv 发表于 2022-8-9 18:59 | 显示全部楼层
本帖最后由 shaoyangv 于 2022-8-9 19:01 编辑

尝试下面两种方法,均未成功。

1. 关闭硬件收校验。
    enet_init()接口的第2个参数使用 “ENET_NO_AUTOCHECKSUM” 来关闭硬件接收校验。
2. 接收到长包后发送暂停帧。
    接收到数据包较大时,在接收中断中处理数据包时,调用 enet_pauseframe_generate() 接口产生暂停帧,告诉发送方下一包数据延迟发送。

测试结果
实际数据抓包如下图,在GD32在收到长数据包后,发送了暂停帧,但存在两个问题。
1. 数量问题。PC发送了10包数据,但仅接收到5包暂停帧。这和修改前的现象一致,即GD32只收到了5包数据。
2. 时间戳问题。PC发送的数据包时间间隔为0,这就很奇怪。而且第1包暂停帧竟然在所有数据包之后。
Snipaste_2022-08-09_18-35-44.png




lifeforrent 发表于 2022-8-10 08:50 | 显示全部楼层
方便发下代码吗,看看程序其他配置
yangxiaor520 发表于 2022-8-11 08:30 来自手机 | 显示全部楼层
代码上传大家看看。
 楼主| shaoyangv 发表于 2022-8-13 17:51 | 显示全部楼层
各位大佬,公司的项目,不方便上传代码。问题依旧没解决,准备换方案了,多谢各位。
tpgf 发表于 2022-9-3 18:56 | 显示全部楼层
在什么层进行抓包的呢
qcliu 发表于 2022-9-3 19:13 | 显示全部楼层
一包数据大概有多少啊
drer 发表于 2022-9-3 19:17 | 显示全部楼层
考虑更换芯片吗
coshi 发表于 2022-9-3 19:25 | 显示全部楼层
丢包有规律性吗
kxsi 发表于 2022-9-3 19:35 | 显示全部楼层
这种丢包跟数据大小有关系吗
wiba 发表于 2022-9-3 20:04 | 显示全部楼层
是不是芯片单片的问题呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部