ESP-IDF 支持两种看门狗:Interrupt Watchdog Timer 和 Task Watchdog Timer (TWDT)。两者都可以通过
make menuconfig
来启用或者禁用。但是 TWDT 还可以通过程序动态启用关闭。
Interrupt Watchdog Timer
负责保证 freeRTOS 的多任务切换中断正常。防止出现某一个任务进入死循环一直占用 CPU ,同时又禁止了中断,这样其他任务就得不到响应。
该看门狗被触发后,默认触发
panic handler
,可以通过 GDB 等调试工具发现出现错误的代码位置。
如果某些情况下,无法执行
NMI handler
(不可屏蔽中断),则会强制重置 Soc。
TWDT
负责保证某些任务不要超时,例如进入死循环。