Hi all, I am working on a project using an STM32 Nucleo H563ZI board with lwIP and FreeRTOS, and I am facing some issues with the stability of the network stack.
After running for a certain period (around 2-3 minutes), the board seems to
crash or freeze, and I am looking for guidance on how to troubleshoot and
resolve this problem.
Here's a summary of my setup and findings:
1. Development environment:
- STM32 Nucleo H563ZI board
- lwIP and FreeRTOS integration
- Ethernet communication with a local router and computer
- Static IP configuration, firewalls disabled
2. Observations:
- The board runs normally for about 2-3 minutes before crashing or
freezing.
- When sending ping requests from the computer, the board responds to
about 30 pings before crashing, with an average round-trip time of 10.774
ms, Ethernet looptime of about 10ms
- Without ping requests, the board sends out around 45 messages
before crashing.
- The crash seems to occur during packet processing or memory
management.
3. Debugging findings:
- In the serial monitor, after the crash, I noticed the following
message: "pbuf_add_header: failed as 0x2002d244 < 0x2002d260 (not enough
space for new header size)"
- The debugger call stack gets stuck in a specific function
callstack where I suspect the assert fails.
- [image: image.png]
- Where the call stack is:
tcip_try_callback (which is trying to call back pbuf_free_ooseq_callback)
pbuf_pool_is_empty
pbug_alloc
- The pbuf length keeps increasing, as seen in the serial monitor logs:
"ip4_input: p->len 84 p->tot_len 84" etc etc
-
- Relevant code:
- I have attached the relevant source files, including:
- udp.c
- ethernetif.c
- lwipopts.h
- lwipopts_freertos.h
My guess is that upon receipt in ARP probe response from my computer to the
board and/or the repeated ping requests from my computer, the stack
eventually runs out of memory, and the pbuf chain length keeps increasing,
however the issue with deallocating pbufs somewhere its not apparent to me.
I suspect that there might be a misconfiguration in the lwIP setup or
memory management, but I am unsure how to proceed with debugging and
resolving the issue.
I would greatly appreciate any guidance or suggestions on the following:
I had mostly based my code on the UDP echoserver example
https://github.com/STMicroelectronics/stm32h5-classic-coremw-apps/blob/main/Projects/NUCLEO-H563ZI/Applications/LwIP/LwIP_UDP_Echo_Server/Core/Src/main.c
Unfortunately, I don't seem to see what I'm missing.
Thank you in advance for your assistance. I look forward to your insights
and recommendations.
udp.c
Description: Binary data
ethernetif.c
Description: Binary data
lwipopts.h
Description: Binary data
lwipopts_freertos.h
Description: Binary data
_______________________________________________ lwip-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/lwip-users
