新手上路
- 积分
- 42
- 金钱
- 42
- 注册时间
- 2023-3-28
- 在线时间
- 11 小时
|
20金钱
如题,使用GD32F450+SMSC8720A+LWIP1.4.1+FREERTOS作为下位机使用以太网和PC通信,其中TCP服务器模块出现问题。
出问题的模块想实现的功能:PC作为TCP客户端循环向单片机发送请求,单片机处理数据,将数据处理结果发给PC。
现象:
1、通信开始时正常,但几次之后单片机就无法返回数据,单片机仍然能ping通,其余模块也功能正常,包括UDP\MODBUSTCP等;
2、PC重新建立TCP连接之后即可接收剩余数据,但同样正常运行几次之后单片机就又没有返回数据了;
3、通过网络抓包发现,本来接收窗口大小设置的是12000,但是每次都在窗口大小变为10000左右的时候出现了单片机无法返回数据的情况;
4、通过调试发现,TCP连接未断开,但是recv函数返回值始终为-1(我用的是socket),也就是连接未断开但单片机接收不到数据;
5、代码在其余开发板上都已经运行正常,但是就只在这块板子上出现了问题;
6、使用lwip2.1.2写了一版程序进行测试,但是同样出现了这个情况。
猜测:
1、可能和接收窗口有关,但根据出现类似问题的网友描述好像不太符合;
2、可能是网络假死,但不知道如何排查;
3、怀疑是接收超时相关配置没做好,但打开了相关宏之后仍然出现问题;
4、硬件问题,但是目前没有手段进行排查。
由于项目原因无法发代码,麻烦大佬们帮看一看是什么原因!
|
|