@@ -3575,10 +3575,21 @@ static BaseType_t prvCreateIdleTasks( void )
35753575 /* The Idle task is created using user provided RAM - obtain the
35763576 * address of the RAM then create the idle task. */
35773577 #if ( configNUMBER_OF_CORES == 1 )
3578+ {
35783579 vApplicationGetIdleTaskMemory ( & pxIdleTaskTCBBuffer , & pxIdleTaskStackBuffer , & ulIdleTaskStackSize );
3580+ }
35793581 #else
3580- vApplicationGetIdleTaskMemory ( & pxIdleTaskTCBBuffer , & pxIdleTaskStackBuffer , & ulIdleTaskStackSize , xCoreID );
3581- #endif
3582+ {
3583+ if ( xCoreID == 0 )
3584+ {
3585+ vApplicationGetIdleTaskMemory ( & pxIdleTaskTCBBuffer , & pxIdleTaskStackBuffer , & ulIdleTaskStackSize );
3586+ }
3587+ else
3588+ {
3589+ vApplicationGetPassiveIdleTaskMemory ( & pxIdleTaskTCBBuffer , & pxIdleTaskStackBuffer , & ulIdleTaskStackSize , xCoreID - 1 );
3590+ }
3591+ }
3592+ #endif /* if ( configNUMBER_OF_CORES == 1 ) */
35823593 xIdleTaskHandles [ xCoreID ] = xTaskCreateStatic ( pxIdleTaskFunction ,
35833594 cIdleName ,
35843595 ulIdleTaskStackSize ,
@@ -8523,36 +8534,34 @@ static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait,
85238534 * it's own implementation of vApplicationGetIdleTaskMemory by setting
85248535 * configKERNEL_PROVIDED_STATIC_MEMORY to 0 or leaving it undefined.
85258536 */
8526- #if ( configNUMBER_OF_CORES == 1 )
8527-
8528- void vApplicationGetIdleTaskMemory ( StaticTask_t * * ppxIdleTaskTCBBuffer ,
8529- StackType_t * * ppxIdleTaskStackBuffer ,
8530- uint32_t * pulIdleTaskStackSize )
8531- {
8532- static StaticTask_t xIdleTaskTCB ;
8533- static StackType_t uxIdleTaskStack [ configMINIMAL_STACK_SIZE ];
8537+ void vApplicationGetIdleTaskMemory ( StaticTask_t * * ppxIdleTaskTCBBuffer ,
8538+ StackType_t * * ppxIdleTaskStackBuffer ,
8539+ uint32_t * pulIdleTaskStackSize )
8540+ {
8541+ static StaticTask_t xIdleTaskTCB ;
8542+ static StackType_t uxIdleTaskStack [ configMINIMAL_STACK_SIZE ];
85348543
8535- * ppxIdleTaskTCBBuffer = & ( xIdleTaskTCB );
8536- * ppxIdleTaskStackBuffer = & ( uxIdleTaskStack [ 0 ] );
8537- * pulIdleTaskStackSize = configMINIMAL_STACK_SIZE ;
8538- }
8544+ * ppxIdleTaskTCBBuffer = & ( xIdleTaskTCB );
8545+ * ppxIdleTaskStackBuffer = & ( uxIdleTaskStack [ 0 ] );
8546+ * pulIdleTaskStackSize = configMINIMAL_STACK_SIZE ;
8547+ }
85398548
8540- #else /* # if ( configNUMBER_OF_CORES == 1 ) */
8549+ #if ( configNUMBER_OF_CORES > 1 )
85418550
8542- void vApplicationGetIdleTaskMemory ( StaticTask_t * * ppxIdleTaskTCBBuffer ,
8543- StackType_t * * ppxIdleTaskStackBuffer ,
8544- uint32_t * pulIdleTaskStackSize ,
8545- BaseType_t xCoreId )
8551+ void vApplicationGetPassiveIdleTaskMemory ( StaticTask_t * * ppxIdleTaskTCBBuffer ,
8552+ StackType_t * * ppxIdleTaskStackBuffer ,
8553+ uint32_t * pulIdleTaskStackSize ,
8554+ BaseType_t xPassiveIdleTaskIndex )
85468555 {
8547- static StaticTask_t xIdleTaskTCBs [ configNUMBER_OF_CORES ];
8548- static StackType_t uxIdleTaskStacks [ configNUMBER_OF_CORES ][ configMINIMAL_STACK_SIZE ];
8556+ static StaticTask_t xIdleTaskTCBs [ configNUMBER_OF_CORES - 1 ];
8557+ static StackType_t uxIdleTaskStacks [ configNUMBER_OF_CORES - 1 ][ configMINIMAL_STACK_SIZE ];
85498558
8550- * ppxIdleTaskTCBBuffer = & ( xIdleTaskTCBs [ xCoreId ] );
8551- * ppxIdleTaskStackBuffer = & ( uxIdleTaskStacks [ xCoreId ][ 0 ] );
8559+ * ppxIdleTaskTCBBuffer = & ( xIdleTaskTCBs [ xPassiveIdleTaskIndex ] );
8560+ * ppxIdleTaskStackBuffer = & ( uxIdleTaskStacks [ xPassiveIdleTaskIndex ][ 0 ] );
85528561 * pulIdleTaskStackSize = configMINIMAL_STACK_SIZE ;
85538562 }
85548563
8555- #endif /* #if ( configNUMBER_OF_CORES == 1 ) */
8564+ #endif /* #if ( configNUMBER_OF_CORES > 1 ) */
85568565
85578566#endif /* #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configKERNEL_PROVIDED_STATIC_MEMORY == 1 ) && ( portUSING_MPU_WRAPPERS == 0 ) ) */
85588567/*-----------------------------------------------------------*/
0 commit comments