看门狗在嵌入式系统中的方方面面

一起学嵌入式 2024-02-02 12:04

扫描关注一起学嵌入式,一起学习,一起成长

01

什么是看门狗?

看门狗技术是20世纪80年代由美国半导体巨头AMD公司首次提出,是一种专门用于检测、记录处理器运行状况以及在异常情况下复位的一种技术。


随着技术的不断的迭代,看门狗逐渐发展成一类专门的芯片,广泛应用于汽车、工业自动化、物联网等领域。

此狗非彼狗!!!

软件会在执行完特定指令后进行喂狗,若在一定周期内看门狗没有收到来自软件的喂狗信号,则认为系统故障,会进入中断处理程序或强制系统复位


系统上电后根据不同的工作模式可以选择使能看门狗,若看门狗被使能则计数器开始计数,如果在设定的时间内没有及时喂狗则会发生看门狗超时


通过寄存器对看门狗进行基本设置,计数器计算狗叫时间,狗叫模块决定看门狗超时后发出的中断或复位方式。

看门狗发展至今,功能已经发展的比较完善,所以已经有很多比较详细且角度不同的分类,例如按照种类分可以分为硬件看门狗和软件看门狗;按照与单片机集成性可以分为内部看门狗和外部看门狗

02

TLF35584中集成的看门狗

以汽车产品中最通用的英飞凌的TLF35584芯片为例,该电源管理芯片通过了ISO26262的ASILD的认证,并且集成了看门狗模块,该看门狗模块既属于硬件看门狗,同时也属于外部看门狗。


Window Watchdog和Functional Watchdog组成,(后面简化成为WWDFWD

Window Watchdog和Functional Watchdo

  1. 功能看门狗与窗口看门狗不同步,两者完全独立。
  2. 功能看门狗和窗口看门狗可以独立激活和禁用。
  3. 看门狗的结果(有效或无效触发)由相关看门狗故障计数器独立监控。
  4. 窗口看门狗的状态为WWO,其值可能为“有效WWD 触发”或“无效WWD 触发”。
  5. 功能看门狗的状态为FWO,其值可能为“有效FWD 触发”或“无效FWD 触发”。
  6. 两个看门狗的设置对安全状态控制的影响在安全状态控制一章中进行了描述,以便更好地理解。

03

Window Watchdog(WWD)

我们称作窗口看门狗或时间看门狗,首先被监控的控制器(MCU)必须在Open Window期间内触发(就是指喂狗操作),喂狗可以通过 WDI 引脚上的下降沿或通过 SPI 命令写入寄存器 WWDSCMD,具体取决于配置。


触发后将终止“Open Window”。看门狗输出指示 WWD 故障计数器的“有效”或“无效”WWD 触发。

如果有效触发,则启动“Closed Window”。如果在“Open Window”期间没有触发或在“Closed Window”期间触发,看门狗输出指示“无效 WWD 触发”到 WWD 失败计数器,并启动新的“Open Window”。

1.WWD工作状态图

Window Watchdog State

  1. “触发”可以是发送到 WWDSCMD 寄存器的 SPI 命令,也可以是 WDI 引脚上的有效看门狗触发
  2. “Long open Window”中“No Trigger”被视为“无效WWD 触发”,看门狗会再次打开一个“Long Open Window”
  3. “Long open Window”内的“触发”被视为“有效 WWD 触发”,看门狗关闭“Long open Window”并打开“Closed Window”
  4. “CLosed Window”内的“触发”被视为“无效WWD触发”
  5. “Closed Window”结束后,“Closed Window”内的“无触发”会将看门狗移至“Open Window”。
  6. “Open Window”内的“触发”被视为“有效WWD 触发”,看门狗关闭“Open Window”并打开“Closed Window”
  7. “Open Window”中的“无触发”被视为“WWD 触发无效”。

2.WDI引脚触发WWD

看门狗输入引脚 WDI 具有集成的下拉电流 IWDI 。看门狗输入 WDI 可以在“Closed Window”内或随后的“Open Window”期间转换为高电平。

WDI引脚

  • WD的有效触发信号

看门狗输入 WDI 以TSAMT周期定期采样。有效触发信号是从VWDIV,高电平到VWDIV,低电平的下降沿。


为了提高 WDI 输入上的抗噪声或毛刺的能力,有效触发信号至少需要两个高采样点,然后是两个低采样点,通过测量低信号的第二个连续采样点来考虑有效触发。


例如,如果引脚 WDI 处的触发脉冲的前三个采样(两个高一个低)位于“关闭窗口”内,并且仅在“打开窗口”中采集第四个采样(第二个低采样),则看门狗 输出 WWO 将指示“有效 WWD 触发”。

  • WDI 触发无效

在“Open Window”期间未检测到触发信号或在“Closed Window”期间检测到触发信号,均视为无效触发。


看门狗输出 WDO 在“Open Window”期间无有效触发后立即指示“无效触发”,或者在“Closed Window”期间检测到触发信号后立即指示“无效触发”。

WDI有效触发和无效触发

3.WWD正常工作——正确触发

正确触发

  1. 如果 ROT(监控微控制器相关电压)的复位输出变高,则“Long Open Window”在 INIT 状态下启动。如果窗口看门狗在睡眠状态下被停用,则第一个Open Window将从睡眠状态转换到唤醒状态(由中断指示)开始。第一个Open Window的时间取决于配置的周期时间,为 600 ms (WDCYC = 1) 或 60 ms (WDCYC = 0)。
  2. 在“Long Open Window”期间,预计会根据配置的触发选择有效触发 WWD。“长Open Window”的最长时间是固定的,但一旦识别到“有效 WWD 触发”,它就会终止。
  3. 窗口看门狗现在将进入“Closed Window”。收到第一个有效触发后,设备将被允许从 INIT 状态移至 NORMAL 状态或从 WAKE 状态移至 NORMAL 状态。
  4. “Closed Window”具有固定的持续时间 tWD,CWt_{WD,CW} (可以通过SPI 命令确定)。它在有效触发信号后立即启动,关闭“Open Window”或“长Open Window”。在“Closed Window”期间不应施加触发信号。不会检测到 WDI 引脚从低电平到高电平的转换,也不会导致触发事件。
  5. 有效的触发信号立即终止“Open Window”,因此“Open Window”的时间是可变的,并且取决于微控制器安排触发的时间。这被视为“有效 WWD 触发”。

4.WWD异常工作——在“Long Open Window”未触发

在Long Open Window未触发

  1. 初始化超时和Long Open Window(LOW)具有相同的典型值。长度。通常这会导致初始化超时在低电平之前或同时完成,这将跳过中断事件 (1)。尽管由于给定的精度,“Long Open Window”内缺少有效触发可能会在低电平结束后导致中断事件,从而使窗口看门狗故障计数器增加 2。
  2. INIT状态定时器第一次超时。由于在 INIT 状态期间未按预期接收到窗口看门狗的有效触发,因此将发出所谓的“软复位”:引脚 ROT 变为零,但后置稳压器的输出电压保持开启状态。
    附加信息:如果窗口看门狗在接下来的 INIT 阶段的下一个“Long Open Window”内未正确触发,将发出“硬复位”,这意味着引脚 ROT 将变为零,并且输出电压将 也被关闭。在 INIT 阶段第三次无效触发后,设备将进入 FAILSAFE 状态。
  3. 经过上电复位延迟时间trd后,所谓的“软复位”引脚ROT再次变高,看门狗打开一个“Long Open Window”,让微控制器有机会触发并同步到看门狗周期 。
  4. 有效触发终止“Long Open Window”,这使得“Long Open Window”的持续时间可变并取决于触发。这被视为“有效 WWD 触发”并启动“Closed Window”。在不发出中断的情况下,窗口看门狗故障计数器将减 1。
  5. 接下来的“Closed Window”持续时间 tWD,CWt。在此时间内触发将被视为“无效WWD触发”。

5.WWD异常工作——在“ Open Window”未触发

在Open Window未触发

  1. “Open Window”内缺少有效触发,导致窗口结束后出现“无效 WWD 触发”。该事件由中断指示,窗口看门狗故障计数器增加 2。
  2. 检测到“无效 WWD 触发”后,看门狗将启动一个持续时间为 tWD,CWt_{WD,CW} 的新“Open Window”,以使微控制器有机会触发并同步到看门狗周期。
  3. 有效触发终止“Open Window”,这使得“Open Window”的持续时间可变并取决于触发。这被视为“有效 WWD 触发”并启动“Closed Window”。在不发出中断的情况下,窗口看门狗故障计数器将减 1。
  4. 如果“Open Window”内出现多次“无效 WWD 触发”,窗口看门狗故障计数器将再次增加 2,直到达到配置的阈值。在这种情况下,将发出重置命令。
  5. 接下来的“Closed Window”持续时间 tWD,CWt_{WD,CW} 。在此时间内触发将被视为“无效WWD触发”。

引脚 ROT 的行为取决于 ΣWWO 的值。在上面的例子中,假设无效触发不会导致超过阈值ΣWWO。

6.WWD异常工作——在初始化之后的“Closed Window”中错误的触发

  1. “Closed Window”期间的触发被指示为“无效WWD触发”。该事件由中断指示,并且窗口看门狗故障计数器增加 2。
  2. “Closed Window”将因“WWD 触发无效”而关闭。最初它会持续时间 tWD,CWt_{WD,CW} 。错误触发终止“Closed Window”并启动“Open Window”,以使微处理器有机会同步到窗口看门狗周期。
  3. 在此“Open Window”内预计会发生有效触发。有效的触发会终止“Open Window”,这使得“Open Window”的持续时间可变并取决于触发。这被视为“有效 WWD 触发”并启动“Closed Window”。在不发出中断的情况下,窗口看门狗故障计数器将减 1。
  4. 接下来的“Closed Window”持续时间 tWD,CWt_{WD,CW} 。在此时间内触发将被视为“无效WWD触发”。

引脚 ROT 的行为取决于 ΣWWO 的值。在上面的例子中,假设无效触发不会导致超过阈值ΣWWO。

7.WWD异常工作——在稳态“Closed Window”错误的触发

在Close Window中错误的触发

  1. “Closed Window”期间的触发被指示为“无效WWD触发”。该事件由中断指示,并且窗口看门狗故障计数器增加 2。
  2. “Closed Window”将因“WWD 触发无效”而关闭。最初它会持续时间 tWD,CWt_{WD,CW} 。错误触发终止“Closed Window”并启动“Open Window”,以使微处理器有机会同步到窗口看门狗周期。
  3. 在此“Open Window”内预计会发生有效触发。有效的触发会终止“Open Window”,这使得“Open Window”的持续时间可变并取决于触发。这被视为“有效 WWD 触发”并启动“Closed Window”。在不发出中断的情况下,窗口看门狗故障计数器将减 1。
  4. 接下来的“Closed Window”持续时间 tWD,CWt_{WD,CW} 。在此时间内触发将被视为“无效WWD触发”。
  5. 引脚 ROT 的行为取决于 ΣWWO 的值。在上面的例子中,假设无效触发不会导致超过阈值ΣWWO。

04

Functional Watchdog(FWD)

我们称作功能看门狗或问答看门狗。在稳定状态下,会生成一个问题(从表中取出),同时心跳计数器从零开始计数。心跳计数器开始计数,直到心跳周期结束。


心跳周期的持续时间可以通过 SPI 命令进行设置和调整。

问题由 4 bits组成,预期答案由 4 个回复组成,每个回复为 8 位。这四个回复应在心跳周期结束之前发送。最后回复应写入同步回复寄存器以重置心跳计数器。

Functional Watchdog的问题与回复

功能看门狗输出 FWO 是一个内部信号:它连接到 FWD 故障计数器。功能看门狗 FWO 输出的值为“有效 FWD 触发”或“无效 FWD 触发”。

1.FWD工作流程图

FWD工作流程图

步骤如下:

  1. 首先判断FWD是否使能;如果未使能,停止并清空心跳计数器值;如果使能,请跳至步骤2;
  2. 开启心跳计数器,并生成初始化问题;
  3. 设置response byte number为3,准备接受第一个回复;
  4. 等待回复值;
  5. 判断心跳计数器是否超时,如果超时,重置心跳计数器,FWD故障计数器加2,请跳至步骤4;如果未超时,请跳至步骤6;
  6. 判断新的回复值是否收到?如果未收到,请跳至步骤4;如果收到了,请跳至步骤7;
  7. 判断是否为最后一个回复?如果不是,将response byte number减1,请跳至步骤4;如果是,请跳至步骤8;
  8. 判断是否同步了回复?如果未同步,请跳至步骤9;如果同步了,重置心跳计数器,也请跳至步骤9;
  9. 判断回复是否正确?如果不正确,请跳至步骤10;如果正确,FWD故障计数器减1,生成新的问题,请跳至步骤3;
  10. 判断是否同步了回复?如果未同步,请跳至步骤3;如果同步了FWD故障计数器加2,也请跳至步骤3。

2.FWD正常工作——正确触发

正确触发模式

步骤如下:

  1. 生成一个新问题,同时心跳计数器开始计数(假设之前发生过“有效 FWD 触发”)
  2. 收到正确的回复(RESP3)
  3. 收到正确的回复(RESP2)
  4. 收到正确回复(RESP1)
  5. 收到正确的同步回复(RESP0)。所有回复均正确,回复顺序正确,并且在心跳计数器溢出之前收到最后一个同步回复。心跳计数器将被重置(设置为零)。这被视为“有效 FWD 触发”,功能看门狗错误计数器 ΣFWO 减 1(如果功能看门狗错误计数器值大于零)
  6. 生成一个新问题,同时心跳计数器开始计数

3.FWD异常工作——同步丢失

同步丢失

步骤如下:

  1. 生成一个新问题,同时心跳计数器开始计数(假设之前发生过“有效 FWD 触发”)
  2. 收到正确的回复(RESP3)
  3. 收到正确的回复(RESP2)
  4. 收到正确回复(RESP1)
  5. 接收到正确的回复(RESP0),但未同步(写入错误的寄存器)。到目前为止,所有回复都是正确的,回复顺序是正确的,并且在心跳计数器溢出发生之前收到了最后一个不同步的回复。
    心跳计数器不会被重置并继续计数。这被视为“有效 FWD 触发”,功能看门狗错误计数器 ΣFWO 减 1(如果功能看门狗错误计数器值大于零)。生成了一个新问题
  6. 心跳计数器仍在计数,等待新问题的回复。心跳计数器将到期并发生溢出。这被视为“无效 FWD 触发”。这功能看门狗错误计数器 ΣFWO 加 2。心跳计数器复位
  7. 心跳计数器开始计数。,不会产生新问题

4.FWD异常工作——回答错误

回答错误

步骤如下:

  1. 生成一个新问题,同时心跳计数器开始计数(假设之前发生过“有效 FWD 触发”)
  2. 收到正确的回复(RESP3)
  3. 收到正确的回复(RESP2)
  4. 收到错误回复(RESP1)
  5. 收到正确的回复(RESP0), 心跳计数器将被重置(设置为零), 完整的答案是不正确的。这被视为“无效 FWD 触发”。功能看门狗错误计数器 ΣFWO 加 2。心跳计数器复位
  6. 没有生成新问题,但心跳计数器开始计数

注意:如果将Resp2和Resp1混合在一起,则将两个回复视为不正确的,则必须按正确的顺序发送回复。

5.FWD异常工作——回复丢失

回复丢失

步骤如下:

  1. 生成一个新问题,同时心跳计数器开始计数(假设之前发生过“有效 FWD 触发”)
  2. 收到正确的回复(RESP3)
  3. 收到正确的回复(RESP2)
  4. 缺少回复(RESP1)
  5. 收到正确的回复(RESP0)。因此,由于缺少回复(在此示例中为 RESP1),最后一个回复不是最后一个回复,而是倒数第二个回复。功能看门狗将等待所有四个回复被写入,而心跳计数器继续计数。所有四个回复没有固定时间,但必须在心跳计数器到期之前以正确的顺序发送
  6. 由于缺少回复RESP1,完整答案不正确。虽然最后的回复是同步的,但是心跳计数器不会被重置并继续计数,直到发生溢出。这被视为“无效 FWD 触发”。功能看门狗错误计数器 ΣFWO 加 2。心跳计数器复位
  7. 不再生成新问题,心跳计数器开始计数

05

为什么需要Watch Dog?

1.功能安全标准软件部分要求

首先在功能安全标准第6章,7.4.12中提到,应使用看门狗进行软件的时间监控和程序流监控。

ISO26262标准第6章

2.功能安全标准硬件部分要求

在第5章的附录中,也提到了不同看门狗的功能和诊断覆盖率

看门狗的诊断覆盖率

功能安全标准

标准中分别介绍几种看门狗的目标和功能描述,我在这里归纳总结一下在ISO26262中,看门狗作为安全机制的一些用法和要求

看门狗的作用

06

如何使用看门狗?

1.功能安全对看门狗的要求

标准并没有明确给出不同的ASIL等级如何使用看门狗,下面是个人根据自身的项目经验,给出的一些建议,仅供参考。

看门狗监控的使用建议

2.内部看门狗VS外部看门狗

内部看门狗与外部看门狗

3.看门狗监控机制的作用

看门狗监控机制

原文:https://www.zhihu.com/question/315309637/answer/3348304856

文章来源于网络,版权归原作者所有,如有侵权,请联系删除。



关注【一起学嵌入式】,回复加群进技术交流群。



觉得文章不错,点击“分享”、“”、“在看” 呗!

一起学嵌入式 公众号【一起学嵌入式】,RTOS、Linux编程、C/C++,以及经验分享、行业资讯、物联网等技术知
评论
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 111浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 360浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 46浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 95浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 27浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 121浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 181浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 161浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 150浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 73浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦