Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

ST32F4 + FreeRTOS + LWIP зависает

Вт авг 18, 2020 18:34:06

Форумчане, прошу помощи. Есть проект, необходимо поднять LWIP и USB. На первое время подключаю все через CubeMX. Версия куба последняя, среда разработки - IAR 8.5 и последняя версия Keil ARM. После сборки проекта LWIP не пингуется. Если работать без FreeRTOS, то проблем нет. Подозреваю проблему в прерываниях, но не знаю как ее отловить.

Сейчас запустил отладку из под IAR через SWO. Проверил в процессе вывод сообщений через printf, сделал вывод каждую секунду сообщения в духе "я живой", чтобы видеть, что процесс не повис. Все прекрасно работает пока я не подключу Ethernet кабель к компу. Как только PHY начинает мигать лампочками FreeRTOS виснет и переходит на
Код:
configASSERT( ucCurrentPriority >= ucMaxSysCallPriority );

в файле port.c
Я так понимаю что-то пытается вызвать функцию FreeRTOS из прерывания с приоритетом выше чем у операционки и крашит ее. Но пошаговая отладка не дает никакой инфы, так как код следующим шагом сразу оказывается в этой строчке.
Оптимизация выключена, HEAP_4, printf из дефолтного процесса закоменчена. Подумываю сделать обертку из семафоров для этой функции, может она непотокобезопасна...

Повторюсь, проект АБСОЛЮТНО чистый с куба. У других людей с забугорья все заводится за 5 минут, а я уже неделю с этим сижу...
Размеры кучи и стека в настройках проекта увеличил, под кучу отдано 50кб памяти.

На работе у коллеги завелось сразу на старом кубе, вроде версии 4.27, но требуется поднять на последних версиях.

Re: ST32F4 + FreeRTOS + LWIP зависает

Сб мар 27, 2021 16:31:45

Так как у вас используется Lwip и FreeRTOS и программа генерировалась при помощи CubeMX, то скорее всего проблема в приоритетах прерываний(сам сталкивался с такой проблемой). Посмотрите эту тему - https://forums.freertos.org/t/stm32-fre ... ubemx/6991
Ответить