看门狗(Watch Dog Timer,WDT)是一种监控电路,主要应用于嵌入式系统,目的是为了提高系统的可靠性和稳定性。在看门狗电路的帮助下,当系统出现异常,如程序跑飞或死循环时,能够自动复位并重新启动系统。
看门狗电路通常包括一个定时器、一个喂狗信号和一个复位(Reset)输出。在正常的系统运行过程中,主控制器(MCU)会定期向喂狗信号发送一个脉冲,以“喂”看门狗,防止其计时到达预设值。如果 MCU 由于某种原因未能在规定时间内喂狗,看门狗定时器将会计满并输出一个复位信号,将 MCU 复位。
在实际应用中,看门狗芯片通常连接到 MCU 的一个 GPIO 端口。MCU 在其正常运行期间会定期向该端口写入一个高电平或低电平信号,以此告诉看门狗它仍然正常工作。如果 MCU 未能按时发出信号,看门狗将触发复位操作。
某些看门狗芯片如 TPV6823 具有多个引脚,包括供电引脚(VCC)、喂狗信号引脚(WDI)、复位输出引脚(RESETn)和手动复位输入引脚(MRn)。这些引脚提供了多种复位方式和时间设置,以适应不同的应用需求。
看门狗的定时时间通常需要保持在一个相对较长的周期,例如 200 毫秒左右。这样的设置是为了确保在正常运行中,即使 MCU 由于干扰而未能及时喂狗,看门狗也不会立即复位系统,从而给 MCU 足够的时间来响应和处理问题。
看门狗可以分为独立看门狗和窗口看门狗。独立看门狗的时间精度要求较低,而窗口看门狗则用于时间精度要求较高的场合。
硬件看门狗利用独立的定时器电路来实现监控功能,具有较高的可靠性。软件看门狗则使用处理器内部的定时器或其他机制来实现,虽然在一定程度上可以简化硬件设计,但在可靠性方面通常不如硬件看门狗。
总结而言,看门狗是一种重要的系统保护机制,通过定期“喂狗”来确保系统的正常运行。当系统出现异常时,看门狗能够及时复位系统,防止死循环和程序跑飞等情况的发生,从而提高系统的可靠性和稳定性。
在实际应用中,开发者需要根据具体需求选择合适的看门狗解决方案,并设置适当的时间参数,以实现最佳的保护效果。
本文演示主要通过 Air780E 核心板和 LuatOS 系统,介绍如何使用看门狗定时器(WDT)库来防止嵌入式设备死机。看门狗电路是一种监控电路,主要应用于嵌入式系统,目的是为了提高系统的可靠性和稳定性。在看门狗电路的帮助下,当系统出现异常时,如程序跑飞或死循环,能够自动复位并重新启动系统。
演示分为两个部分:正常运行情况和故障场景模拟。
在正常运行情况下,示例代码会初始化看门狗库,并设置超时时间和喂狗周期。然后,创建一个任务,该任务会定期喂狗,以防止看门狗定时器超时。如果看门狗定时器超时,系统将自动重启。
在故障场景模拟部分,我们添加了一个新的任务 fault_task,该任务进入一个死循环,不进行喂狗操作。这样,当看门狗定时器超时后,系统将自动重启,模拟了设备在故障场景下的自动恢复能力。
通过这个演示,我们可以看到看门狗定时器在嵌入式系统中的重要作用,它能够有效防止系统死机,提高系统的稳定性和可靠性。
本文以Air780E核心板为例
在中国大陆环境下,使用移动,电信,联通的物联网卡或者手机卡都可以。
WIN7以及以上版本的WINDOWS系统。
1. USB 转 Type-C 数据线
它的一端是 USB 接口,另一端是 Type-C 接口。
Luatools 工具由合宙推出,支持最新固件获取、固件打包、trace 打印及单机烧录等功能。
工具使用说明参考:
Luatools 下载和详细使用:
https://docs.openluat.com/Luatools/
1)底层 core 下载地址:LuatOS 固件版本下载地址:https://docs.openluat.com/air780e/luatos/firmware/
本 demo 使用的固件是 core_V1112 压缩包 内的 LuatOS-SoC_V1112_EC618_FULL.soc
2) demo 位置
本 demo 主要用于演示如何在 LuatOS 系统中使用看门狗定时器(wdt)库来防止设备死机。
demo位置:https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/wdt
3)源码及固件已打包压缩,如下所示
压缩包中 core 文件夹存放的是固件,code 文件夹存放的是脚本代码。
该库提供了一系列用于管理和操作看门狗定时器的 API 函数,使得开发者可以方便地在 LuatOS 系统中管理看门狗定时器,从而提高设备的稳定性。
本教程所使用API接口参考:
https://wiki.luatos.com/api/wdt.html?highlight=watchdog
1)打开 Luatools 工具
2)点击 项目管理测试
3)根据图示操作
注意,大家只需要跟着做到第四步即可,第五步跟着后面的操作再做。
1)将 Air780E 核心板通过 USB 数据线连接至电脑,如下图所示: