Размер heap FreeRTOSConfig.h и в настройках IAR. В чем разница? С недавних пор решил освоить FreeRTOS, вроде все понятно, но есть пара вопросов по поводу кучи. Использую IAR и порт FreeRTOS для Cortex-M0.
В настройках линкера IAR есть два поля (размер stack и heap), с этим все понятно. Но в файле FreeRTOSConfig.h снова необходимо указать размер heap. Я так понимаю, размер кучи, указываемой в настройках линкера - это для функций malloc(), а размер, указываемый в файле FreeRTOSConfig.h - это для pvPortMalloc()?

21 Авг 2019 в 06:28
358 +1
0
Ответы
1

Да, вы правильно понимаете. Размер кучи, указываемой в настройках линкера IAR, относится к обычной динамической памяти, которая выделяется функциями malloc() и free(). Это память, которую вы можете использовать для выделения динамических переменных и структур данных в вашем приложении.

С другой стороны, размер кучи, указываемый в файле FreeRTOSConfig.h для pvPortMalloc(), относится к куче, управляемой FreeRTOS. FreeRTOS использует свою собственную кучу для управления памятью, выделяемой задачам, очередям и другими структурами данных внутри ядра операционной системы.

Поэтому вам необходимо указать размер кучи и в настройках линкера IAR и в файле FreeRTOSConfig.h, чтобы обеспечить корректную работу как стандартных функций работы с памятью (malloc(), free()), так и функций FreeRTOS для управления памятью в вашем приложении.

20 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир