ESP-IDF 支援兩種看門狗:Interrupt Watchdog Timer 和 Task Watchdog Timer (TWDT)。兩者都可以通過
make menuconfig
來啟用或者禁用。但是 TWDT 還可以通過程式動态啟用關閉。
Interrupt Watchdog Timer
負責保證 freeRTOS 的多任務切換中斷正常。防止出現某一個任務進入死循環一直占用 CPU ,同時又禁止了中斷,這樣其他任務就得不到響應。
該看門狗被觸發後,預設觸發
panic handler
,可以通過 GDB 等調試工具發現出現錯誤的代碼位置。
如果某些情況下,無法執行
NMI handler
(不可屏蔽中斷),則會強制重置 Soc。
TWDT
負責保證某些任務不要逾時,例如進入死循環。