01
什么是看门狗?
看门狗技术是20世纪80年代由美国半导体巨头AMD公司首次提出,是一种专门用于检测、记录处理器运行状况以及在异常情况下复位的一种技术。
随着技术的不断的迭代,看门狗逐渐发展成一类专门的芯片,广泛应用于汽车、工业自动化、物联网等领域。
此狗非彼狗!!!
软件会在执行完特定指令后进行喂狗,若在一定周期内看门狗没有收到来自软件的喂狗信号,则认为系统故障,会进入中断处理程序或强制系统复位。
系统上电后根据不同的工作模式可以选择使能看门狗,若看门狗被使能则计数器开始计数,如果在设定的时间内没有及时喂狗则会发生看门狗超时。
通过寄存器对看门狗进行基本设置,计数器计算狗叫时间,狗叫模块决定看门狗超时后发出的中断或复位方式。
看门狗发展至今,功能已经发展的比较完善,所以已经有很多比较详细且角度不同的分类,例如按照种类分可以分为硬件看门狗和软件看门狗;按照与单片机集成性可以分为内部看门狗和外部看门狗;
02
TLF35584中集成的看门狗
以汽车产品中最通用的英飞凌的TLF35584芯片为例,该电源管理芯片通过了ISO26262的ASILD的认证,并且集成了看门狗模块,该看门狗模块既属于硬件看门狗,同时也属于外部看门狗。
由Window Watchdog和Functional Watchdog组成,(后面简化成为WWD和FWD)
Window Watchdog和Functional Watchdo
两个看门狗的设置对安全状态控制的影响在安全状态控制一章中进行了描述,以便更好地理解。
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
“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”期间检测到触发信号后立即指示“无效触发”。
3.WWD正常工作——正确触发
正确触发
有效的触发信号立即终止“Open Window”,因此“Open Window”的时间是可变的,并且取决于微控制器安排触发的时间。这被视为“有效 WWD 触发”。
4.WWD异常工作——在“Long Open Window”未触发
在Long Open Window未触发
接下来的“Closed Window”持续时间 tWD,CWt。在此时间内触发将被视为“无效WWD触发”。
5.WWD异常工作——在“ Open Window”未触发
在Open Window未触发
接下来的“Closed Window”持续时间 tWD,CWt_{WD,CW} 。在此时间内触发将被视为“无效WWD触发”。
引脚 ROT 的行为取决于 ΣWWO 的值。在上面的例子中,假设无效触发不会导致超过阈值ΣWWO。
6.WWD异常工作——在初始化之后的“Closed Window”中错误的触发
接下来的“Closed Window”持续时间 tWD,CWt_{WD,CW} 。在此时间内触发将被视为“无效WWD触发”。
引脚 ROT 的行为取决于 ΣWWO 的值。在上面的例子中,假设无效触发不会导致超过阈值ΣWWO。
7.WWD异常工作——在稳态“Closed Window”错误的触发
在Close Window中错误的触发
引脚 ROT 的行为取决于 ΣWWO 的值。在上面的例子中,假设无效触发不会导致超过阈值ΣWWO。
04
Functional Watchdog(FWD)
我们称作功能看门狗或问答看门狗。在稳定状态下,会生成一个问题(从表中取出),同时心跳计数器从零开始计数。心跳计数器开始计数,直到心跳周期结束。
心跳周期的持续时间可以通过 SPI 命令进行设置和调整。
问题由 4 bits组成,预期答案由 4 个回复组成,每个回复为 8 位。这四个回复应在心跳周期结束之前发送。最后回复应写入同步回复寄存器以重置心跳计数器。
Functional Watchdog的问题与回复
功能看门狗输出 FWO 是一个内部信号:它连接到 FWD 故障计数器。功能看门狗 FWO 输出的值为“有效 FWD 触发”或“无效 FWD 触发”。
1.FWD工作流程图
FWD工作流程图
步骤如下:
2.FWD正常工作——正确触发
正确触发模式
步骤如下:
生成一个新问题,同时心跳计数器开始计数
3.FWD异常工作——同步丢失
同步丢失
步骤如下:
心跳计数器开始计数。,不会产生新问题
4.FWD异常工作——回答错误
回答错误
步骤如下:
没有生成新问题,但心跳计数器开始计数
注意:如果将Resp2和Resp1混合在一起,则将两个回复视为不正确的,则必须按正确的顺序发送回复。
5.FWD异常工作——回复丢失
回复丢失
步骤如下:
不再生成新问题,心跳计数器开始计数
05
为什么需要Watch Dog?
1.功能安全标准软件部分要求
首先在功能安全标准第6章,7.4.12中提到,应使用看门狗进行软件的时间监控和程序流监控。
ISO26262标准第6章
2.功能安全标准硬件部分要求
在第5章的附录中,也提到了不同看门狗的功能和诊断覆盖率
看门狗的诊断覆盖率
功能安全标准
标准中分别介绍几种看门狗的目标和功能描述,我在这里归纳总结一下在ISO26262中,看门狗作为安全机制的一些用法和要求
看门狗的作用
06
如何使用看门狗?
1.功能安全对看门狗的要求
标准并没有明确给出不同的ASIL等级如何使用看门狗,下面是个人根据自身的项目经验,给出的一些建议,仅供参考。
看门狗监控的使用建议
2.内部看门狗VS外部看门狗
内部看门狗与外部看门狗
3.看门狗监控机制的作用
看门狗监控机制
文章来源于网络,版权归原作者所有,如有侵权,请联系删除。
关注【一起学嵌入式】,回复“加群”进技术交流群。
觉得文章不错,点击“分享”、“赞”、“在看” 呗!