ESP32 system 看門狗

中斷看門狗

中斷看門狗(Interrupt watchdog)用於檢測中斷是否屏蔽超時

由於 FreeRTOS 任務切換依賴中斷信號,因此中斷屏蔽超時直接的影響是會導致 Task 無法切換,導致系統崩潰。

中斷看門狗被觸發的常見原因如下:

  1. Task 在進入 while() 循環之前關閉了中斷,而遲遲沒有退出循環將中斷使能
  2. 待補充

可通過 CONFIG_ESP_INT_WDT_TIMEOUT_MS 增加或減小喂狗時間

Task 看門狗

Task 看門狗定時器(Task Watchdog Timer ,TWDT)用於檢測 Task 是否長期佔用 CPU 資源

某個 task 長期佔用 CPU 會導致其它 task 沒有機會被執行,導致設計功能無法實現

Task 看門狗被觸發的原因如下:

  1. task 的 while 循環中沒有阻塞函數和 vTaskDelay
  2. 待補充

Task 看門狗默認情況下只監視每個 CPU 的 idle task,可以通過 esp_task_wdt_add 爲自定義 task 添加監視

參考資料

  1. Watchdogs:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/system/wdts.html#watchdogs
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章