1) Yes, the number of packets sent before the error occurs does vary depending on whether an empty FreeRTOS task or a TCP handler is added. Without any tasks, application works correctly, with just the empty task, the issue manifests after approximately 1000 packets. With a TCP handler and business logic enabled, the error seems to occur even sooner (~50-100 packets). My main issue is after initial burst this issue persist until reboot.
2) The UDP burst is being generated using a Python script, sending packets without any timeouts. I attached Python script.
3,4) I started with the lwip_ping_freertos example from the NXP SDK.
I've changed ping_thread logic to simple, printing one.
-- sys_thread_new("ping_thread", ping_thread, NULL, DEFAULT_THREAD_STACKSIZE, 1);
++ sys_thread_new("ping_thread", simple_thread, NULL, DEFAULT_THREAD_STACKSIZE, 1);
Added a minimal FreeRTOS task with the lowest priority. This task logs a "heartbeat" message once per second. By "empty FreeRTOS task," I mean a task with minimal functionality. I see similar behaviour using my custom board with business logic implemented.
static void simple_thread(void *arg)
{
while (1) {
PRINTF("Heartbeat\n");
vTaskDelay(1000);
}
5) I can observe board is operational, can trigger breakpoints and can observe heartbeats printed properly.