Компоненты и технологии • №2 '2011 компоненты



Pdf көрінісі
бет36/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   32   33   34   35   36   37   38   39   ...   129
Kurniz

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


Достарыңызбен бөлісу:
1   ...   32   33   34   35   36   37   38   39   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет