摘要
看门狗定时器是确保数字控制器(如微控制器(MCU))安全运行的关键器件。为了控制数字器件程序序列中的硬件故障,基本功能安全(FS)标准IEC 61508-2附录A表A.10推荐了几种诊断技术和措施。其中包括:具有独立时基和时间窗口的看门狗,具有独立时基但无时间窗口的看门狗,程序序列的时间和逻辑监测的组合。虽然每种技术都有相应的可达到的最大诊断覆盖率(如本系列的第3部分所述),但无一例外都使用了看门狗定时器。因此,本文将展示如何使用看门狗定时器实现这些诊断功能。
引言
随着安全相关系统(SRS)广泛采用微控制器(MCU)作为处理器,为了确保安全运行,诊断措施必不可少。IEC 61508-2推荐使用由硬件(一个通道)支持的自检作为针对处理器的诊断技术之一。其中使用特殊硬件来提高故障检测的速度并扩大检测范围。例如,使用看门狗定时器IC来周期性地监测MCU输出的特定位模式。
此外,IEC 61508-2规定了两种类型的看门狗:一种是具有独立时基但无时间窗口的看门狗,另一种是具有独立时基和时间窗口的看门狗。尽管如此,它也可以用于其他技术中,例如用于程序序列的时间和逻辑监测的组合中。因此,本文将深入探讨此类程序序列监测诊断措施配合ADI的带看门狗功能的高性能监控电路时,在运行和诊断覆盖率方面的差异。
具有独立时基但无时间窗口的看门狗
IEC 61508的第2部分将简易看门狗描述为具有独立时基的外部定时元件。借助此类器件,可以在指定的时间间隔内检测计算器件(如MCU)中的程序序列故障。其运行机制是这样的:允许MCU在看门狗达到超时之前向看门狗发出复位信号(表示程序序列运行顺利),或者让看门狗超时,以便看门狗可以向MCU发出复位信号(表示程序运行不顺利)。
图1a显示了通过MAX6814实现的具有独立时基但无时间窗口的看门狗示例。值得注意的是,MCU通常内置看门狗定时器(WDT),但如果它是故障微控制器的一部分,则不能仅依靠它来检测故障,否则当发生共因故障(CCF)时,故障检测并不可靠。为了解决此类CCF问题,应使用单独的WDT来确保MCU处于复位状态。1,2
图1b通过流程图说明了嵌入MCU程序执行中的看门狗定时器的行为。在流程开始之前,必须设置看门狗超时周期(WDT)的最大复位间隔。定义了这样的周期或间隔后,WDT将在程序执行时运行。MCU必须能够在MAX6814达到超时之前向其WDI引脚发送信号,否则如果达到超时,该器件将向MCU发出复位信号。当MCU复位时,应将系统置于安全状态。
这种WDT的超时周期将能捕获程序序列问题。例如:程序序列卡在循环中,或者中断服务例程未及时返回。举例来说,软件的每个循环中原本应该运行10个子例程,但结果只有5个被执行。然而,它不会涉及其他与程序序列相关的问题,比如程序的执行时间是否比预期更长或更短,或者程序的序列是否正确执行。这些问题可以通过下一种类型的WDT来解决。
具有独立时基和时间窗口的看门狗
窗式WDT存在独立的时间窗口,既能检测到过度延迟情况,也能检测到过早执行情况。因此,它禁止MCU在超出或短于规定的开放(或称“有效”)窗口时作出响应。与简易看门狗相比,它能保证程序按时执行所有子例程;否则,它将使MCU复位。3
图2显示了采用MAX6753实现的程序序列监测示例。它有一个窗式看门狗,其看门狗周期可通过外部电容配置。图3显示了采用MAX42500的另一种实现方案,其看门狗时间设置可通过I2C配置,这使得外部元件数量有效减少,并且能够通过分组差错校验(PEC)字节提高故障覆盖率,如图4所示。PEC字节能够提高对I2C通信相关故障的诊断覆盖率,例如总线错误、卡塞总线情况、时序问题和不当配置。
虽然相较于简易WDT,具有独立时基和时间窗口的看门狗能够实现更高的诊断覆盖率,但它仍然无法捕捉软件子例程是否按正确顺序执行的问题。而这就是下一种类型的诊断技术所要解决的问题。
程序序列的时间和逻辑监测的组合
根据IEC 61508-2,采用时间和逻辑监测组合的诊断技术能够对程序序列实现高诊断覆盖率。这种技术的实现方案中包含窗式看门狗和一项检查程序序列是否按正确顺序执行的功能。当图2中的电路与图5中的序列结合时,可得到一个可视化示例,其中MCU的每个程序例程都采用唯一的字符与数字组合。每次执行例程时,这些唯一的组合都会放置在一个数组中。执行完最后一个例程之后,只有当数组中的所有字都正确设置时,MCU才会向看门狗发送复位信号。
质询/响应架构
某些系统可能需要更高的诊断覆盖率来捕捉MCU的故障,因而仅在窗口时间内发送回脉冲是不够的。为此,可能要求MCU完成一项复杂的任务(如计算),以验证MCU的功能完整性。在这种情况下,MAX42500的质询/响应看门狗可以派上用场。在这种看门狗模式下,必须取IC中的一个键-值寄存器,作为质询消息的起始点。MCU须利用此消息来计算需要发送回看门狗IC的适当响应,以便在有效窗口内重启看门狗。此类质询/响应看门狗的工作方式类似于简易窗式看门狗,区别在于键寄存器会被更新,而不是通过上升沿刷新看门狗,如图6所示。值得注意的是,对于MAX42500的看门狗定时器,看门狗输入是通过I2C实现的,而看门狗输出是输出复位引脚。
MAX42500包含一个线性反馈移位键控(LFSK)寄存器,它使用多项 式x8 + x6 + x5 + x4 + 1 ,将所有位上移到最高有效位(MSB),并将计算出的位作为新的最低有效位(LSB)插入。因此,MCU必须以这种方式计算响应,并通过 I2C将其返回到MAX42500的寄存器。值得注意的是,这种多项式既是本原多项式,也是8位情况下的最大长度反馈多项式。它确保所有位值组合(1到255)都由该多项式生成,并且数字的顺序确实是伪随机的。4,5
这种质询/响应可以实现比时间和逻辑程序序列监测组合更高的覆盖率,因为它表明MCU仍然可以进行实际计算。这不同于MCU仅实现决策例程的情形,例如仅检查由字组成的数组是否正确,然后发出复位看门狗的信号。
可达到的诊断覆盖率
根据基本功能安全标准,针对SRS中每个模块推荐的每项诊断措施,给出了可达到的最大诊断覆盖率。表1列出了IEC 61508标准中采用看门狗定时器的程序序列。
| 诊断技术/措施 | 经考量认为能够达到的 最大诊断覆盖率 |
| 具有独立时基但无时间窗口的看门狗 | 低 |
| 具有独立时基和时间窗口的看门狗 | 中 |
| 程序序列的时间和逻辑监测的组合 | 高 |
此外,由于存在标准可能未涵盖的其他实现方案,可达到的诊断覆盖率只能通过故障插入测试进行验证。
结语
本文列举了三类使用看门狗定时器的诊断措施,IEC 61508-2推荐采用这些措施来应对程序序列中的故障。第一类看门狗具有独立的时基但没有时间窗口,可以利用简易看门狗实现。这种诊断措施只能实现较低的诊断覆盖率。第二类看门狗具有独立的时基和时间窗口,可以通过窗式看门狗实现。这种措施可以实现中等诊断覆盖率。为将诊断覆盖率提升到更高水平,可以在通常使用看门狗的时间监测之外,采用逻辑监测。质询/响应窗式看门狗架构能够检查MCU的计算能力,因此可以进一步提高对程序序列故障的诊断覆盖率。
参考电路
1 “IEC 61508 All Parts, Functional Safety of Electrical/Electronic/Programmable Electronic Safety-Related Systems”,国际电工委员会(IEC),2010年。
2 “Top Misunderstandings About Functional Safety”,TÜV SÜD,2025年。
3 “窗式看门狗操作的基础知识”,ADI公司,2021年12月。
4 “Pseudo Random Number Generation Using Linear Feedback Shift Registers”,Maxim,2010年6月。
5 Mohammed Abdul Samad AL-khatib和Auqib Hamid Lone,“Acoustic Lightweight Pseudo Random Number Generator based on Cryptographically Secure LFSR”,International Journal of Computer Network and Information Security,Vol. 2,2018年2月。
