mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-08 04:02:27 +00:00
New Task Watchdog API (Revert of Revert)
This commit reverts the revert on the new task watchdog API. It also fixes the following bug which caused the reversion. - sdkconfig TASK_WDT_TIMEOUT_S has been reverted from the unit of ms back to the unit of seconds. Fixes bug where projects using the new API without rebuilding sdkconfig would cause the old default value of 5 to be interpreted in ms. This commit also adds the following features to the task watchdog - Updated idle hook registration to be compatible with dual core hooks - Updated dual core hooks to support deregistration for cpu - Legacy mode has been removed and esp_task_wdt_feed() is now replaced by esp_task_wdt_reset(). esp_task_wdt_feed() is deprecated - Idle hooks to reset are now registered/deregistered when the idle tasks are added/deleted from the Task Watchdog instead of at Task Watchdog init/deinit - Updated example
This commit is contained in:
@@ -335,9 +335,6 @@ void start_cpu0_default(void)
|
||||
do_global_ctors();
|
||||
#if CONFIG_INT_WDT
|
||||
esp_int_wdt_init();
|
||||
#endif
|
||||
#if CONFIG_TASK_WDT
|
||||
esp_task_wdt_init();
|
||||
#endif
|
||||
esp_cache_err_int_init();
|
||||
esp_crosscore_int_init();
|
||||
@@ -426,6 +423,29 @@ static void main_task(void* args)
|
||||
#endif
|
||||
//Enable allocation in region where the startup stacks were located.
|
||||
heap_caps_enable_nonos_stack_heaps();
|
||||
|
||||
//Initialize task wdt if configured to do so
|
||||
#ifdef CONFIG_TASK_WDT_PANIC
|
||||
ESP_ERROR_CHECK(esp_task_wdt_init(CONFIG_TASK_WDT_TIMEOUT_S, true))
|
||||
#elif CONFIG_TASK_WDT
|
||||
ESP_ERROR_CHECK(esp_task_wdt_init(CONFIG_TASK_WDT_TIMEOUT_S, false))
|
||||
#endif
|
||||
|
||||
//Add IDLE 0 to task wdt
|
||||
#ifdef CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0
|
||||
TaskHandle_t idle_0 = xTaskGetIdleTaskHandleForCPU(0);
|
||||
if(idle_0 != NULL){
|
||||
ESP_ERROR_CHECK(esp_task_wdt_add(idle_0))
|
||||
}
|
||||
#endif
|
||||
//Add IDLE 1 to task wdt
|
||||
#ifdef CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1
|
||||
TaskHandle_t idle_1 = xTaskGetIdleTaskHandleForCPU(1);
|
||||
if(idle_1 != NULL){
|
||||
ESP_ERROR_CHECK(esp_task_wdt_add(idle_1))
|
||||
}
|
||||
#endif
|
||||
|
||||
app_main();
|
||||
vTaskDelete(NULL);
|
||||
}
|
||||
|
Reference in New Issue
Block a user