cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H7 + FreeRTOS + LWIP: UDP packets not sent after long idle

markushehn
Associate

Hi all,

I’m using STM32H755 on a Nucleo board with FreeRTOS, the socket-API and CubeMX-generated LWIP. Sending a UDP packet immediately after network init works fine, but if I wait ~10 seconds before calling sendto(), it returns successfully, DMA descriptors OWN=0, ETH IRQs are triggered, yet no packet reaches the wire. Calling sys_check_timeouts() before sendto() does not help. The tcpip_thread has high priority, while the sender task runs at IDLE priority. In my tests, I disabled the Cache.

It seems the issue is not PHY or DMA. It seems that sendto() copies data to the LWIP buffer, but the tcpip_thread does not process it after a long idle. How can UDP packets be reliably sent after idle without changing the network stack or manually triggering anything?

Thanks for any insights!

0 REPLIES 0