Цитата
Если во время выполнения функции netconn_recv выполнится netconn_write в параллельной задаче, соединение ломается.
Все должно работать, у меня работает, что то у вас или настроено не так или что не то с файлом sys_arch.c.
Цитата
Если надо прервать ожидание netconn_recv из другой задачи, во FreeRTOS можно включить опцию
#define INCLUDE_xTaskAbortDelay 1
и вызовом xTaskAbortDelay(hTask) разблокировать задачу.
Это самый глупый совет никогда так не делайте !!!!, в лучшем случае получите утечку памяти, так как ресурсы занятые стеком никто не освободит, в худшем вылет или зависание стека.
Если нужно не зависать в netconn_recv:
Настроить и включить для соединения TCP_KEEEP_ALIVE это основное.
Далее в зависимости от преследуемых целей можно использовать 2 варианта.
1) Установить таймаут на прием и соответсвенно его обрабатывать.
2) Если нужно выйти по команде с другой задачи нужно воспользоваться функцией netconn_shutdown, с параметром закрытия RX, после этой команды цикл netconn_recv прервется с ошибкой ERR_CLS, но соединение по прежнему будет активно только на передачу, этой же командой можно прервать и передачу, если этой функции поставить rx = 1 и tx = 1 она закроет соединение как команда netconn_close.