Размер стека компоновщика FreeRTOS STM32 и размер стека задач

Я использую FreeRTOS на STM32F103 и использую IAR-верстак. Я пытаюсь понять взаимосвязь между «общим размером стека, установленным компоновщиком» и «размером стека для каждой задачи в FreeRTOS». Например, когда FreeRTOS создает задачи, использует ли он стек, определенный компоновщиком, или определяет свой собственный в свободной оперативной памяти? Я пытаюсь определить размер стека для проекта. Я понимаю, что могу использовать вызов функции waterMark для определения стека каждой задачи. Мысли?

2

Решение

Прежде всего, вы должны понимать, что при создании задачи в памяти FreeRTOS (TCB и Stack) для этой задачи выделяется куча FreeRTOS, размер которой определяется в FreeRTOSConfig.h.

Куча компоновщика — это куча библиотеки C, а не куча FreeRTOS. Стек компоновщика обычно используется только для вашего кода запуска, а в некоторых портах — для стека прерываний. Это НЕ используется ни одной из задач.

Например, представьте, что у вас есть система на основе FreeRTOS с одним настраиваемым потоком, который называется DEMO. Ваш макет кучи может выглядеть как схема ниже. Самый важный урок из этой картины для вас заключается в том, что каждый стек задач не связан со стеком, определенным в компоновщике. Стек задач размещается в куче FreeRTOS, которая не связана с кучей, определенной в компоновщике, как я уже упоминал!

Example Heap Layout:

+-------------------+ <----------+
|                   |            |
| FREE HEAP MEMORY  |             FREE SPACE
|                   |            |
+-------------------+ <----------+
| TIMER TASK TCB    |            |
+-------------------+            |
| TIMER TASK STACK  |            |
+-------------------+            |
| IDLE TASK TCB     |            |
+-------------------+            |
| IDLE TASK STACK   |             ALLOCATED SPACE
+-------------------+            |
| DEMO TASK TCB     |            |
+-------------------+            |
| DEMO TASK STACK   |            |
+-------------------+            |
| MUTEXES, SETS ETC.|            |
+-------------------+ <----------+
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]