похоже я на бронепоезде и в противогазе.. поднял крайнии lwip +
FreeRTOS на stm32h750, работает ... но не долго! есть водолазы кто
в это говно погружалсо? rx_pool дохнет отмораживается на ассерте что при освобождение pbuf счетчик ссылок не нулевой - и превед медвет: lwip куча все . проблемы с приемом пакетов. код взял из примеров который генерит STCube для nucleo-stm32h743zi.
полез отладчикам по этму .. Г.. коду. сделано почему то как всегда через жопу. eth_dma честно выставляет дескрипторы в таблицк и заполняет данными пакета в буферах. А вот теперь самое интересно и пока не понятное для меня - lwip делает еще одно копирование - то есть, выделяет из кучи "свой" pbuf, перекладывает данные из тог оместа куда dma сложило и в формате pbuf отсылает через очередь в задачу где уже парсятся пакеты. после отработки пакета соответствующий pbuf освобождается - тоесть все логично кроме двойного ненужного копирования.
по поводу копирования - я помню времена когда lwip было а FreeRTOS и прочего такого небыло, помню когда ThreadX был мне недоступен и вообще AVR били пиком моды. тут нужны была инфраструктура pbuf покудо небыло в eth переферии никаких буферов и и дма даже в мечтах и все делалось в main на говнокалбЭках. теперь же в новых версиях lwip видимо Адам Дункен по просьбе продавцов платных стеков не стал отрезать нижние протухшие рудименты а тупо заправил их в трусы чтоб не было видно. иначе не продаш ты свой платный закрытый стек за 5000 и 1000 зеленых шекелей.
теперь по поводу корневой проблемы - после некоторой работы котороая за ранее не детерминируется по времени происходит отказ кучи на выделение буфера на прием - все.... ход времени во внутреннней вселенной останвливается.
я еще буду ковырятся но это начинает раздражать.
правильно я понимаю что происходит тупо фрагментация pbuf кучи и в конце концов оно дсдыхает. косвенным подтверждением является то что коллеги сообщают что увеличением размера кучи добились работы в течени суток! невиданный поместный подвиг героизма!
вопрос - я чего не умею (в очто очень хочется верить? иначе прийдется писать самому прослойку с аллокатором) или все татаки оно также как и M$ Win изготовлено...
вопрос покупного стека не рассматриваю - плавали знаем - покупно еще хуже бвает, под сукном не видно какашек. и ваще нужны исходники чтоб исправлять и добавлять.
парралельно подымаю FreeRTOS стек - там все красиво коротко и прилично почти что. но мало. думаю это будет рабочий вариант но lwip теперь из вредность распотрошить хочется.
B-assignment_vanderPloeg.pdf