ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 декабря
1561652 Топик полностью
TeньoтцaR (Сегодня, 02:13, просмотров: 10) ответил Balda на Господа, шел 1568 день подружить LWIP с одновременной работой TCP и UDP. имею 2шт TCP_PCB из 6; 1шт UDP_PCB из 2х.UDP отправляет 3(три) байта информации каждые 100 мс. по TCP идут протоколы Modbus tcp, IEC104. ДЛя отправки данных реализована очередь FIFO. Если не отправлять UDP - все идет как по маслу.. при включении отправки по UDP наблюдаю. от погоды на марсе
UDP+TCP на LwIP работает прекрасно. Выше наверное не удается аллоцировать память для pbuf'а, -1 это ЕМНИП ошибка аллокации у LwIP. 

Скорее всего потому что у тебя течет память, потому что текут pbuf'ы, так как это основная единица LwIP. Как только ты начинаешь "дубасить" каждые 100мс у тебя быстро кончается память.

pbuf нужно освобождать после того как а) Ты аллоцировал pbuf б) Но что не очевидно, после того как pbuf прилетает внутрь в callback'ах

Переключи макросом аллокацию памяти, вместо malloc используй MEMORY POOL.

На сайте разработки LwIP есть примеры, в примерах видно как работать с pbuf

Для отладки работы LwIP с pbuf в LwIP можно включить отладочное макро.

Но лучше прошагать внутрь LwIP пошагово в режиме отладки. Да, код лапшистый, но не фатально, чуть больше терпения. В LwIP прекрасно видно места где он возвращает ошибки, но наверное это будет код где LwIP внутри себя аллоцирует pbuf и не может этого сделать так как кончилась память.