I am working with a Modbus TCP application, based on the STM32F746 nucleo. The PLC polls the STM every 2 ms approximately on Modbus function codes.
The basic firmware is generated by cube mx, with FREERtos, LWIP is configured wth no debug messages, no UDP, no DHCP.
The only modifications in the ethernetif.c
- use a signal instead of a semaphore to start RX
- invalidate and clean cache, since the ethernet buffers are in a cacheable region.
the firmware from ,time to time, say every 200.000 packets in average does not reply to the PLC. So after 200ms the STM is requested for retransmission, and this occurs after 200ms after changing TCP_TMR_INTERVAL to 100ms.
Of course this 150 packet loss is not acceptable.
Wireshark shows the problem as a retransmission request from the PLC side.
I googled this problem and still have no joy.