В общем, решил я поднять как-то свой старый китайский девборд под управлением STM32F107VCT и сделать небольшой проект с использованием сети. Причем именно упороться и сгенерировать проект в STM32Cube. Ну и конечно куда без FreeRTOS ? Но вот загвоздка. DHCP включен, FreeRTOS включен адрес на DHCP сервере резервируется, но не подтверждается устройством. Интересно то, что если не использовать RTOS, а просто в бесконечном цикле вызывать сгенерированную кубом функцию MX_LWIP_Process, то все работает. "Значит не работает обработчик сети" - подумал я. В конечном итоге оказалось, что проблема в размере кучи.
В итоге, как победил. Захожу в настройки LWIP->Key options и режу настройки TCPIP_THREAD_STACKSIZE, DEFAULT_THREAD_STACKSIZE до 128.
Настройки LWIP |
Далее, в настройках FreeRTOS увеличиваю размер кучи в 2 раза до 8192 и минимальный размер стека со 128 до 64.
Настройки FreeRTOS |
Пересобираем проект и все работает.
Комментариев нет:
Отправить комментарий