Они хранятся в глобальной памяти, но не «в куче» в том смысле, что компилятор C не будет генерировать вызовы FreeRTOS heap_x.c
(где x
- один из номеров реализации кучи) длявыделите эту память, она просто вставит ее в правильный раздел, и компоновщик разместит этот раздел где-то в памяти.
Память, используемая в качестве резервного хранилища кучи, как правило, также будет иметь ту же форму,то есть мы имеем это в heap_2.c
:
static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];
, который просто объявляет глобальную переменную, которая является массивом указанного размера;затем компоновщик поместит его в фактическую память, как и любая другая переменная.
Предполагается, что используется платформа на основе флэш-памяти, то есть не та, на которой программа FreeRTOS динамически *1012* загружается при запуске.- время от некоторого кода, в этом случае, конечно, этот код должен помещать все разделы программы в память и может действительно выделять кучу памяти для этого.