使用看门狗定时器改进 IoT 系统稳健性

投稿人:DigiKey 北美编辑

物联网 (IoT) 设计非常重视安全性,却往往忽视了另一方面的重要性,即开发足够稳健的系统,无需人工干预系统也能从故障自动恢复。 为确保这种稳健性,设计人员应该仔细研究普通的看门狗定时器 (WDT),目前这种设备各种各样,从简易型,到集成智能型,不一而足。

本文首先回顾内外部 WDT 的基本原理,然后介绍部分最新款的 WDT 设备,以及如何使用它们以确保系统稳健性。

为何看门狗定时器对 IoT 至关重要

在系统现场部署了数十亿个 IoT 设备的情况下,如果发生故障,技术人员不可能及时进行维修。 因此,IoT 系统必须能够自动检测故障并从中恢复,而无需任何人工干预。

看门狗具备多种不同的形状和尺寸,但通常可分为简易定时器、窗口式定时器和智能电子狗三种类型。 看门狗可作为硬件和软件用于微控制器内部,也可作为硬件用于微控制器外部,甚至还能够与硬件和软件元器件集成,用作独立的微控制器。 总而言之,不论是采用哪一种看门狗解决方案,唯一的目的都是监视和恢复系统。 为此,设计人员需要考虑各种看门狗的独特性能和设计挑战,以确保稳健的 IoT 系统设计。

内部看门狗基本原理

内部看门狗定时器属于硬件外设,几乎是所有单片微控制器的一个组成部分,可与板载外设和系统时钟进行交互(图 1)。 默认情况下,内部看门狗定时器设置为禁用。启用看门狗之前,开发人员需要设置预定义周期。 如果软件锁定,或出现影响软件运行的硬件故障,看门狗定时器将超时,并强制微控制器复位。 在此过程中,看门狗定时器将清除错误,并允许微控制器重新初始化系统。

Texas Instrument 的 MSP430G2210 看门狗定时器示意图

1: 看门狗定时器包含在大多数微控制器中,例如 Texas Instrument 的 MSP430G2210,并且可在软件锁定时复位处理器。 (图片: Texas Instruments)

内部看门狗定时器虽然原理简单,但如果要正确执行,却需要花费很多心思。 例如,专为看门狗开发的软件不能简单地将看门狗定时器盲目清零。 该软件应该在清零看门狗之前,对系统执行检查,以确保所有任务和硬件都正常工作。

在开发内部看门狗解决方案时,开发人员应该尝试采纳下列几项建议:

  • 切勿出于任何原因禁用看门狗。 事实上,在选择微控制器时,应确保看门狗一旦启用之后,就无法再被禁用。
  • 切勿在周期性中断期间,在未进行软件功能检查的情况下对看门狗清零。
  • 确保看门狗定时器为独立的看门狗。 独立的看门狗具有单独的时钟,能够检测系统时钟是否已停止。
  • 使用具有窗口式看门狗特性的看门狗。 这类看门狗需要等待一段最短时间后才能被清零。 如果在窗口启动前尝试清零,看门狗将进行系统复位。 这样可防止失控软件超驰看门狗计时器。

内部看门狗朝着建立稳健的嵌入式系统迈开了重要的一步,但其本身并未提供一个非常稳固的解决方案。 要真正提高稳健性,开发人员需要考虑外部看门狗。

使用外部看门狗增强稳健性

无论开发人员在内部看门狗实施过程中如何谨慎细致,内部看门狗都无法始终万无一失。 许多实施都存在缺陷,共享系统时钟和设有禁用选项就是其中两个例子。

当系统需要在现场自行工作时,使用外部看门狗可带来诸多优势,例如:

  • 执行硬件系统复位,以确保重新启动微控制器电源,进而重新启动内部外设电源。
  • 将看门狗与微控制器振荡器电路分离。
  • 为监视系统提供一个完全独立的进程。

所有这些优势都有助于实现系统的稳健性,但使用外部 WDT 仍然存在少许不足。 其中包括因增设 IC 引起的硬件成本增加,以及系统复杂性提高。 然而,正如我们所见,综合所有考虑因素时,这些缺陷都显得微不足道。 现在,我们来检验如何设计一个简单稳健的外部看门狗电路(图 2)。

外部看门狗电路示例示意图

2: 示例外部看门狗电路监视微控制器的特性和状态,而微控制器具有自己的内部看门狗定时器。 (使用 Digi-Key Scheme-it® 绘制的示意图)

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此出版商

DigiKey 北美编辑