aseris wrote on Monday, March 27, 2017:
There is a mistake in official example for static memory allocation for IDLE task and Timers task.
http://www.freertos.org/a00110.html#configSUPPORT_STATIC_ALLOCATION
Found this issue when task list becomes corrupted and I start figure outing what happened with debug plugin in IDE.
The issue is in lines
static **StaticTask_**t xIdleTaskTCB;
static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
and
static StaticTask_t xTimerTaskTCB;
static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ];
the example proposes to allocate only 1/2/4 bytes of RAM to store TBC_t structure which is >100 bytes long
Example code “works” until allocated stack is enough big and stack overflow check algorithms did not turned on.
the correct code could be
staticTCB_t xIdleTaskTCB;
But, type xIdleTaskTCB is described inside tasks.c.