使用看门狗定时器改进 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® 绘制的示意图)

该电路由一个微控制器和一个外部看门狗电路构成,其中微控制器运行自己的内部看门狗定时器。 在此示例中,看门狗电路是一个具备看门狗功能的 Texas Instruments TPL5010 毫微功耗系统定时器。 外部看门狗具有一个输出复位引脚,直接与微控制器复位引脚连接。 当切换 WAKE 引脚时,TPL5010 会在 DONE 引脚上发出 heartbeat 等待微控制器响应。 如果微控制器无响应,复位线将拉低,以复位微控制器。 看门狗周期通过调节 R2 进行设置。

在设计中增设下列这种简单的低成本电路,是提高系统稳健性的绝佳途径。 开发人员甚至无需等待开发板旋转即可开始检测。 TPL5010 开发套件可轻松与其它开发套件进行搭配来测试看门狗的功能,而不必长时间等待可用的硬件。(图 3)。

Texas Instruments TPL5010 开发板图片

3: Texas Instruments TPL5010 开发板的成本低于 30 美元,提供的针座不仅能够连接微控制器进行测试,还可用于配置 TPL5010 及测量其电流消耗。 (图片: Texas Instruments)

在选择外部看门狗时,开发人员需要考虑若干因素,例如:

  • 最小和最大超时周期
  • 支持窗口式看门狗
  • 电流消耗
  • 最大程度减少引脚数
  • 潜在故障模式(如有)

设计智能看门狗解决方案

适用于 IoT 设备的最佳看门狗是智能看门狗。 智能看门狗是一种监控型微控制器,除了能够执行基本的 heartbeat 监测,还可监视系统通信(图 4)。 有时,微控制器停止响应互联网,但仍然能够成功清零外部看门狗。 在这种情况下,互联网会发送微控制器的复位指令。 智能看门狗可监视通信线路,例如 UART 发送和接收线路,以发现要求其重启系统的特殊指令。

在此示例中,通信模块同时连接微控制器和智能看门狗。 请注意,智能看门狗也配有外部 TPL5010。 原因在于,智能看门狗是运行软件的微控制器,为了确保稳健性,必须具备自己的外部看门狗。

智能看门狗系统架构示例示意图

4: 智能看门狗系统架构示例。 (使用 Digi-Key Scheme-it 绘制的示意图)

在设计智能看门狗,开发人员需要考虑几个重要因素,例如:

  • Heartbeat 特性
  • 输入/输出利用率
  • 成本
  • 可用闪存
  • 能量消耗
  • 故障模式
  • 最大程度降低物理基底面

目前市场上已推出几款可作为优异智能看门狗使用的微控制器。 第一款是 Texas Instruments MSP430G2xx,具有 2 kB 闪存和 4 条 I/O 线路。 这款微控制器具备恰到好处的足够编码空间和引脚数,可开发为极其简单的智能看门狗。

对于需要通信监视功能的应用来说,增加 I/O 线路和提供额外存储器的方法非常实用。 在这些情况下,MSP430G2231IPW14RMSP430G2553IPW20R 将会是理想选择。

虽然如此,但真正实现看门狗“智能性”的是智能看门狗软件,这对开发人员来说,既是需要关注的重点,也是编写一行行代码的切入点。 需要注意的是,代码不需要很复杂,事实上,越简单越好。 成熟简单的小型软件最适合看门狗。 以下所示为 MSP430 的简单代码示例(代码列表),源自 TPL5010 评估模块文档:

static volatile bool Reset = true;

void main(void)

{

WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

 

P1OUT |= BIT0; // Set P1.0 to high

P1DIR |= BIT0; // Set P1.0 to output direction

P1DIR &= ~BIT1; // Set P1.1 to input direction

P2IES &= ~BIT0; // P2.0 Lo/Hi edge

P2IFG &= ~BIT0; // P2.0 IFG Cleared

P2IE |= BIT0; // P2.0 Interrupt Enabled

 

while(1)

{

   __delay_cycles(500000); // Set Delay

  

   // If true then the heartbeat was not received

   if(Reset == true)

   {

      // The heartbeat was not received. Reset the processor

      P1OUT &=~ BIT0;

      __delay_cycles(100); // Set Delay

      P1OUT |= BIT0;

      Reset = false;

   }

   else

   {

      Reset = true;

   }

 

}

}

 

// Port 2 interrupt service routine

#pragma vector=PORT2_VECTOR

__interrupt void Port_2(void)

{

   P2IFG &= ~BIT0; // P2.0 IFG Cleared

   P2IE |= BIT0; // P2.0 Interrupt Enabled

   Reset = false;

}

代码列表: 监视微控制器 heartbeat 的 MSP430 软件示例。 如果未在预期时间内接收到 heartbeat,微控制器将复位。 (来源: 源自 Texas Instruments 的 SNAU173 应用说明)。

示例代码显示智能看门狗首先进行初始化,然后等待一段特定的时间,最后进行检查以确定是否应该重启微控制器。 智能看门狗假设微控制器已出现故障,将复位变量设置为 true。 微控制器负责发送 heartbeat 脉冲来触发中断,从而将复位变量重新设置为 false。 示例代码中还可以加入许多功能,例如:

  • 窗口式看门狗
  • 进入低功耗状态
  • 清零正在监视智能看门狗的 TPL5010
  • 监视通信线路
  • 跟踪复位次数

这些可能性所受的限制,仅仅在于确保稳健性设计真正需要的因素。

结论

IoT 的安全性固然重要,但开发人员也不应该忽视系统的稳健性。 为做到这一点,看门狗将在 IoT 中发挥至关重要的作用,不仅因为设备的部署现场让人类鞭长莫及,而且因为人们期望设备能够几乎全天候无故障地工作。 内部看门狗几乎没有为开发者提供恢复机会,而外部看门狗以及配备一些额外软件的智能看门狗,则可为现场提供稳健的可恢复设计。

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

关于此出版商

DigiKey 北美编辑