Я запускаю freeRTOS и lwip 1.4.1 с используемым сокетом api на процессоре stm32 (stm32f407). В целом работает неплохо. Я могу отправлять и получать данные с помощью UDP и TCP.
Но в временном окне от 3 до 7 дней я вижу странное поведение.
Моя проблема
Каждые 3–7 дней мой клиент (Windows 10, которая отправляет 1-2 HTTP-запроса в секунду) не может отправлять эти запросы. Когда это происходит, появляется ~ 10 запросов подряд, которые не выполняются. Через несколько мгновений стек вообще не будет восстанавливаться.
Моя догадка
Я думаю, что я, возможно, неправильно сконфигурировал что-то в своей конфигурации LWIP. Потому что стек хорошо используется и в этом направлении не должно быть ошибок.
Мои настройки Ethernet
сервер и клиент подключены напрямую, между ними нет коммутатора, концентратора или маршрутизатора.
сервер (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
- большие пбуфы
- с / без отставания
Но все без улучшения этой проблемы с подключением. Может ли это быть из-за часто повторно используемых номеров портов от клиента, что могло вызвать эту проблему?
Здесь у меня есть соответствующая часть вывода отладки lwip:
tcp debugging output
Вот журнал Wireshark:
hole wireshark log:
https://www.file-upload.net/download-12682664/debug_tcp_00001_20170828172950.html
А вот мой lwipopts.h:
lwip configuration: