【发布时间】:2018-02-06 17:17:01
【问题描述】:
我在 stm32 处理器 (stm32f407) 上使用套接字 api 运行 freeRTOS 和 lwip 1.4.1。 总的来说,它工作得很好。 我可以使用 udp 和 tcp 发送和接收数据。
但在 3 到 7 天的时间窗口内,我看到了一个奇怪的行为。
我的问题
每隔 3 到 7 天,我的客户端(Windows 10,每秒发送 1-2 个 HTTP 请求)无法发送这些请求。发生这种情况时,连续有约 10 个请求失败。在很短的时间内,堆栈根本不会重新生成。
我的猜测
我认为我的 LWIP 配置中可能配置错误。 因为栈用得很好,应该不会有这个方向的bug
我的以太网设置
服务器和客户端直接相连,中间没有交换机、集线器或路由器。
服务器(stm32/lwip):
- 静态,192.168.168.2
- 网络掩码,255.255.255.0
客户端(win10)eth0:
- 静态,192.168.168.1
- 网络掩码,255.255.255.0
客户端(win10)eth1:
- dhcp,正常工作网络
我的尝试
目前我正在运行测试,每秒发送约 7-8 个请求,但该错误并不经常出现。 我玩弄了 lwip 配置:
- 为堆栈提供更多内存
- 更多 pbufs
- 更大的 pbufs
- 有/没有积压
但一切都没有改善这个连接问题。 会不会是因为客户端经常重复使用的端口号,导致这个问题?
这里我有 lwip 调试输出的相关部分:
tcp debugging output
这里是 Wireshark 日志:
hole wireshark log:
https://www.file-upload.net/download-12682664/debug_tcp_00001_20170828172950.html
这里是我的 lwipopts.h:
lwip configuration:
【问题讨论】:
标签: sockets ethernet lwip stm32f4