物联网 (IoT) 设计非常重视安全性,却往往忽视了另一方面的重要性,即开发足够稳健的系统,无需人工干预系统也能从故障自动恢复。 为确保这种稳健性,设计人员应该仔细研究普通的看门狗定时器 (WDT),目前这种设备各种各样,从简易型,到集成智能型,不一而足。
本文首先回顾内外部 WDT 的基本原理,然后介绍部分最新款的 WDT 设备,以及如何使用它们以确保系统稳健性。
为何看门狗定时器对 IoT 至关重要
在系统现场部署了数十亿个 IoT 设备的情况下,如果发生故障,技术人员不可能及时进行维修。 因此,IoT 系统必须能够自动检测故障并从中恢复,而无需任何人工干预。
看门狗具备多种不同的形状和尺寸,但通常可分为简易定时器、窗口式定时器和智能电子狗三种类型。 看门狗可作为硬件和软件用于微控制器内部,也可作为硬件用于微控制器外部,甚至还能够与硬件和软件元器件集成,用作独立的微控制器。 总而言之,不论是采用哪一种看门狗解决方案,唯一的目的都是监视和恢复系统。 为此,设计人员需要考虑各种看门狗的独特性能和设计挑战,以确保稳健的 IoT 系统设计。
内部看门狗基本原理
内部看门狗定时器属于硬件外设,几乎是所有单片微控制器的一个组成部分,可与板载外设和系统时钟进行交互(图 1)。 默认情况下,内部看门狗定时器设置为禁用。启用看门狗之前,开发人员需要设置预定义周期。 如果软件锁定,或出现影响软件运行的硬件故障,看门狗定时器将超时,并强制微控制器复位。 在此过程中,看门狗定时器将清除错误,并允许微控制器重新初始化系统。
图 1: 看门狗定时器包含在大多数微控制器中,例如 Texas Instrument 的 MSP430G2210,并且可在软件锁定时复位处理器。 (图片: Texas Instruments)
内部看门狗定时器虽然原理简单,但如果要正确执行,却需要花费很多心思。 例如,专为看门狗开发的软件不能简单地将看门狗定时器盲目清零。 该软件应该在清零看门狗之前,对系统执行检查,以确保所有任务和硬件都正常工作。
在开发内部看门狗解决方案时,开发人员应该尝试采纳下列几项建议:
- 切勿出于任何原因禁用看门狗。 事实上,在选择微控制器时,应确保看门狗一旦启用之后,就无法再被禁用。
- 切勿在周期性中断期间,在未进行软件功能检查的情况下对看门狗清零。
- 确保看门狗定时器为独立的看门狗。 独立的看门狗具有单独的时钟,能够检测系统时钟是否已停止。
- 使用具有窗口式看门狗特性的看门狗。 这类看门狗需要等待一段最短时间后才能被清零。 如果在窗口启动前尝试清零,看门狗将进行系统复位。 这样可防止失控软件超驰看门狗计时器。
内部看门狗朝着建立稳健的嵌入式系统迈开了重要的一步,但其本身并未提供一个非常稳固的解决方案。 要真正提高稳健性,开发人员需要考虑外部看门狗。
使用外部看门狗增强稳健性
无论开发人员在内部看门狗实施过程中如何谨慎细致,内部看门狗都无法始终万无一失。 许多实施都存在缺陷,共享系统时钟和设有禁用选项就是其中两个例子。
当系统需要在现场自行工作时,使用外部看门狗可带来诸多优势,例如:
- 执行硬件系统复位,以确保重新启动微控制器电源,进而重新启动内部外设电源。
- 将看门狗与微控制器振荡器电路分离。
- 为监视系统提供一个完全独立的进程。
所有这些优势都有助于实现系统的稳健性,但使用外部 WDT 仍然存在少许不足。 其中包括因增设 IC 引起的硬件成本增加,以及系统复杂性提高。 然而,正如我们所见,综合所有考虑因素时,这些缺陷都显得微不足道。 现在,我们来检验如何设计一个简单稳健的外部看门狗电路(图 2)。
图 2: 示例外部看门狗电路监视微控制器的特性和状态,而微控制器具有自己的内部看门狗定时器。
|