看门狗(Watchdog)
概述
看门狗定时器(Watchdog Timer, WDG)是一种硬件定时器,主要用于检测和恢复由软件故障引起的系统异常。它是一个自动递减的计数器,期间需要系统周期性地“喂狗”(复位计数器),否则计数器归零后会触发复位。 WDG 可以分为独立看门狗(Independent WDG)和系统看门狗(System WDG),其中系统看门狗又可以分为安全看门狗和非安全看门狗, 看门狗的架构图如下:
功能特性
共同特性
一旦使能后,不能除能。
可选的提前中断功能,可在看门狗超时前的可编程时间生成中断。
每个看门狗定时器都有独立的启动原因。
独立看门狗特有的特性
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM4 或 KM0 处于调试模式时会自动暂停。
使能后,超时时间只能减小,不能增大。
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM4 或 KR4 处于调试模式时会自动暂停。
使能后,超时时间只能减小,不能增大。
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM4 或 KR4 处于调试模式时会自动暂停。
使能后,超时时间只能减小,不能增大。
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM4 或 KR4 处于调试模式时会自动暂停。
使能后,超时时间只能减小,不能增大。
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM0 处于调试模式时会自动暂停。
使能后,超时时间不能改变。
系统看门狗特有的特性
当 KM0 处于调试模式时,WDG0 暂停工作;当 KM4 处于调试模式时,WDG1 和 WDG2 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
当 KM4 处于调试模式时,WDG1 和 WDG2 暂停工作; 当 KR4 处于调试模式时,WDG3 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
当 KM4 处于调试模式时,WDG1 和 WDG2 暂停工作; 当 KR4 处于调试模式时,WDG3 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
当 KM4 处于调试模式时,WDG2 暂停工作; 当 KR4 处于调试模式时,WDG3 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
当 KM4 处于调试模式时,WDG1 和 WDG2 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
备注
独立看门狗和系统看门狗都有窗口功能,但是由于 AON 的 100k 时钟是未校准的时钟,所以不建议使能独立看门狗的窗口功能。
硬件默认使能
独立看门狗在 Efuse 中默认使能,系统每次启动时 IWDG 都是使能的,IWDG 的超时时间是 64 秒, 同时软件中会创建 rtos 定时器,每 500 毫秒执行一次喂狗任务。
默认不使能 IWDG
默认不使能 IWDG
默认不使能 IWDG
默认不使能 IWDG
低功耗模式
在 Deepsleep 状态下,所有看门狗都不能工作。
在 sleep 状态下,系统看门狗不能工作,独立看门狗可以配置在 sleep 状态下继续工作或者暂停工作。
独立看门狗可以在 sleep 状态下继续工作的情形,推荐使能提前中断用于唤醒系统,执行提前中断函数进行喂狗。
复位域
在看门狗计数到 0 时,会触发全局复位。
独立看门狗在计数器计数到 0 后会触发全局复位。
系统看门狗可以通过软件配置在计数到 0 后触发全局复位或者局部复位(复位所在的核以及看门狗本身)。
独立看门狗在计数器计数到 0 后会触发全局复位。
系统看门狗可以通过软件配置在计数到 0 后触发全局复位或者局部复位(复位所在的核以及看门狗本身)。
独立看门狗在计数器计数到 0 后会触发全局复位。
系统看门狗可以通过软件配置在计数到 0 后触发全局复位或者局部复位(复位所在的核以及看门狗本身)。
在看门狗计数到 0 时,会触发全局复位。
应用示例
SDK 提供了两类功能示例,帮助开发者了解和使用看门狗功能:
mbed 示例
路径:
{SDK}\component\example\peripheral\mbed\Watchdog\mbed_watchdog展示如何在 mbed 环境中实现看门狗控制。
raw 示例
路径:
{SDK}\component\example\peripheral\raw\Watchdog\raw_watchdog展示如何在无抽象层的情况下直接控制看门狗。
以下是对 raw 示例功能的简要说明:
raw_watchdog 演示如何设置和控制看门狗;
备注
要了解示例支持的芯片,请查看示例路径下的 README.md 文件。
API 参考
要详细了解和使用相关 API,请参阅 {SDK}\component\soc\amebaxxxx\fwlib\include\ameba_wdg.h 。