diff --git a/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/FreeRTOSConfig_smp.h b/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/FreeRTOSConfig_smp.h index d2a89eeb51..9f81ddc460 100644 --- a/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/FreeRTOSConfig_smp.h +++ b/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/include/freertos/FreeRTOSConfig_smp.h @@ -198,7 +198,11 @@ This file get's pulled into assembly sources. Therefore, some includes need to b #else #define configUSE_IDLE_HOOK 0 #endif +#if CONFIG_FREERTOS_USE_TICK_HOOK #define configUSE_TICK_HOOK 1 +#else +#define configUSE_TICK_HOOK 0 +#endif #if CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE #define configCHECK_FOR_STACK_OVERFLOW 0 #elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL diff --git a/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/port.c b/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/port.c index c5a840a34a..73c0840aaa 100644 --- a/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/port.c +++ b/components/freertos/FreeRTOS-Kernel-SMP/portable/xtensa/port.c @@ -620,15 +620,14 @@ BaseType_t xPortSysTickHandler(void) portbenchmarkIntLatency(); traceISR_ENTER(SYSTICK_INTR_ID); BaseType_t ret; + esp_vApplicationTickHook(); if (portGET_CORE_ID() == 0) { - //Only Core 0 calls xTaskIncrementTick(); + // FreeRTOS SMP requires that only core 0 calls xTaskIncrementTick() ret = xTaskIncrementTick(); } else { - //Manually call the IDF tick hooks - esp_vApplicationTickHook(); ret = pdFALSE; } - if(ret != pdFALSE) { + if (ret != pdFALSE) { portYIELD_FROM_ISR(); } else { traceISR_EXIT(); @@ -657,13 +656,6 @@ void __attribute__((weak)) vApplicationStackOverflowHook( TaskHandle_t xTask, c } #endif -#if ( configUSE_TICK_HOOK > 0 ) -void vApplicationTickHook( void ) -{ - esp_vApplicationTickHook(); -} -#endif - #if CONFIG_FREERTOS_USE_MINIMAL_IDLE_HOOK /* By default, the port uses vApplicationMinimalIdleHook() to run IDF style idle