Hi
When I tested lower power mode, it is found that idle task could not enter portSUPPRESS_TICKS_AND_SLEEP. Because prvGetExpectedIdleTime() always returns zero. On freertos smp, the number of idle tasks is equal to core numbers.
+++ b/tasks.c
@@ -2978,7 +2978,7 @@ void vTaskSuspendAll( void )
{
xReturn = 0;
}
- else if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > 1 )
+ else if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > configNUM_CORES )
{
/* There are other idle priority tasks in the ready state. If
* time slicing is used then the very next tick interrupt must be
Besides, minial idle task does not check configUSE_TICKLESS_IDLE and only core0 does systick handler. The idle task has no affnity with core0. If minimal idle task runs on core1 and idle task runs on core0, core0 can not do tickless which enable systick.