Задать вопрос
@ananevilya
Инженер

Размер heap FreeRTOSConfig.h и в настройках IAR. В чем разница?

С недавних пор решил освоить FreeRTOS, вроде все понятно, но есть пара вопросов по поводу кучи. Использую IAR и порт FreeRTOS для Cortex-M0.
В настройках линкера IAR есть два поля (размер stack и heap), с этим все понятно. Но в файле FreeRTOSConfig.h снова необходимо указать размер heap. Я так понимаю, размер кучи, указываемой в настройках линкера - это для функций malloc(), а размер, указываемый в файле FreeRTOSConfig.h - это для pvPortMalloc()?
  • Вопрос задан
  • 670 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Ocelot
@Ocelot
Да, верно понимаете. У IAR и у FreeRTOS - у каждого свой heap. Если вы собираетесь выделять динамическую память только средствами ОС, можно смело поставить в настройках линкера размер heap = 0.

Со стеком немного сложнее. Есть стек, память под который выделяется линкером. Его отключать нельзя, иначе не сможет работать ОС. И плюс еще у FreeRTOS есть свой стек, точнее набор стеков, для каждого таска свой. За их размер отвечает параметр configMINIMAL_STACK_SIZE в конфиге. Кроме того, при создании таска размер стека для него можно переопределить.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы