Tasks reserve more stack than definied with xTaskCreate()?

Hello people, I am using FreeRTOS v8.2.3 on ZYNQ custom board. I am trying to figure out memory requirements of FreeRTOS, and first thing I have done is to print return value of function xPortGetFreeHeapSize before and after the task is created. When creating tasks, for each task is passed the same stack size (2048 bytes), so I would expect that when task is created, amount of FreeRTOS stack is reduced by that same stack size. However, after creating each task, FreeRTOS stack is reduced by size of around 8000 bytes (it’s not the same for each task, but almost as 4 * 2048 ), instead of expected 2048. I am using heap4.c. What exactly I have been missing?

Tasks reserve more stack than definied with xTaskCreate()?

Beware that StackSize arg is NOT just bytes. It’s the number of portSTACK_TYPE. From the Ref.Doc: ‘… The value specifies the number of words the stack can hold, not the number of bytes. For example, on an architecture with a 4 byte stack width, if usStackDepth is passed in as 100, then 400 bytes of stack space will be allocated (100 * 4 bytes) …’

Tasks reserve more stack than definied with xTaskCreate()?

Of course, that’s it. This was quick and simple. Thanks.