-
- Клод немного поправил проект. Зависать перестало. Но клиент пока не работает. Может по другим причинам. Бывает пинг отваливается, но потом восстанавливается. В общем, наверное, плохая идея RawAPI с ртос использовать. Готовить надо уметь тонко. vesago(74 знак., Вчера, 12:48, картинка)
- По-моему, в примерах обычно корявые порт ethernetif.c, не
рассчитанный на многопоточку. Чем больше у вас потоков, которые с
lwip работают, и чем больше они нагружены, тем больше вероятность
ошибки. Oman(144 знак., Вчера, 10:31)
- О! Спасибо. Это уже конкретика. Я пока в размышениях - попробовать
родной стек IP из FreeRTOS или LWIP? - Nikolay_Po(Вчера, 10:32)
- Тут не подскажу, FreeRTOS'ый не использовал. - Oman(Вчера, 14:30)
- О! Спасибо. Это уже конкретика. Я пока в размышениях - попробовать
родной стек IP из FreeRTOS или LWIP? - Nikolay_Po(Вчера, 10:32)
- Для начало надо проверить, сколько выделено всяких разных конечных
ресурсов. SciFi(404 знак., 05.07.2026 19:25)
- Спасибо, я пробовал увеличивать - пока не помогает. Процесс навечно
застревает в процедуре tcp_input при входящем пакете. Надо
попробовать проект без ртоса запустить. vesago(1 знак., 05.07.2026 20:21, картинка)
- Возможно, где-то в ОСРВ, не хватает обёрток критических секций. И
какая-то гонка состояний портит состояние LWIP. Ты его как
интегрировал в ОС? - Nikolay_Po(Вчера, 09:48)
- Тоже склоняюсь к такому варианту. Я за основу взял пример от
гигадивайса. Пример на фриртосе с lwip. Эта библиотека, как
положено, запускается отдельным потоком. Конструкция отличается от
вида, который без ртос. Т.е. уже под ртос заточена. Пример работал
c Netconn API, я использовал RawAPI. Вроде все сокеты
инициализировал в контексте TCP потока. Работают они по калбэкам
тоже в контексте одного потока TCP. Да, отправка коряво сделана. Я
пока ее в контексте рабочей vesago(553 знак., Вчера, 10:06)
- У меня lwip некогда не была с потоками, и смею заверить, там есть способы накосячить и без параллелизма с синхронизацией. Ставлю свои 5 копеек на то, что не там ищете. - SciFi(Вчера, 10:34)
- Я бы попробовал сделать обработку в отдельной задаче, а уже ей кидать или уведомления, или через очередь. Для кадров Ethernet, удобно делать очередь, в которой передаётся указатель и размер кадра, чтобы соблюсти принцип Zero-Copy. - Nikolay_Po(Вчера, 10:31)
- Тоже склоняюсь к такому варианту. Я за основу взял пример от
гигадивайса. Пример на фриртосе с lwip. Эта библиотека, как
положено, запускается отдельным потоком. Конструкция отличается от
вида, который без ртос. Т.е. уже под ртос заточена. Пример работал
c Netconn API, я использовал RawAPI. Вроде все сокеты
инициализировал в контексте TCP потока. Работают они по калбэкам
тоже в контексте одного потока TCP. Да, отправка коряво сделана. Я
пока ее в контексте рабочей vesago(553 знак., Вчера, 10:06)
- Возможно, где-то в ОСРВ, не хватает обёрток критических секций. И
какая-то гонка состояний портит состояние LWIP. Ты его как
интегрировал в ОС? - Nikolay_Po(Вчера, 09:48)
- Спасибо, я пробовал увеличивать - пока не помогает. Процесс навечно
застревает в процедуре tcp_input при входящем пакете. Надо
попробовать проект без ртоса запустить. vesago(1 знак., 05.07.2026 20:21, картинка)