pvPortMalloc() и vPortFree() можно беспре-
пятственно использовать и в прикладных
целях, выделяя память для хранения своих
переменных.
FreeRTOS поставляется с тремя стандарт-
ными схемами выделения памяти, которые
содержатся соответственно в исходных фай-
лах heap_1.c, heap_2.c, heap_3.c. В дальней-
шем будем именовать стандартные схемы
выделения памяти согласно именам файлов
с исходным кодом, в которых они определе-
ны. Разработчику предоставляется возмож-
ность использовать любой алгоритм выделе-
ния памяти из поставки FreeRTOS или реали-
зовать свой собственный.
Выбор одной из стандартных схем выде-
ления памяти осуществляется в настройках
компилятора (или проекта, если использует-
ся среда разработки) добавлением к списку
файлов с исходным кодом одного из файлов:
heap_1.c, heap_2.c или heap_3.c.
Схема выделения памяти
heap_1.c
Часто программа для микроконтроллера
допускает только создание задач, очередей
и семафоров и делает это перед запуском
планировщика. В этом случае память дина-
мически выделяется перед началом выполне-
ния задач и никогда не освобождается. Такой
подход позволяет исключить такие потен-
циальные проблемы при динамическом вы-
делении памяти, как отсутствие детерминиз-
ма и фрагментация, что важно для обеспе-
чения заданного времени реакции системы
на внешнее событие.
Схема heap_1.c предоставляет очень
п р о с т у ю р е а л и з а ц и ю A P I - ф у н к ц и и
pvPortMalloc() и не содержит реализации API-
функции vPortFree(). Поэтому такую схему
следует использовать, если задачи в програм-
ме никогда не уничтожаются. Время выпол-
нения API-функции pvPortMalloc() в этом
случае является детерминированным.
Достарыңызбен бөлісу: |