分享好友 资讯首页 频道列表

一文了解汽车ECU的看门狗

2025-05-27 09:36

工作中频繁碰到reset,一会听说是内狗reset了,又一会听说是外狗reset了。到底什么是看门狗,又到底什么是内狗,什么是外狗呢?接下来本文将你了解看门狗的基础知识和基础原理。

01 、什么是看门狗?

汽车控制器的看门狗与我们以前学习单片机所了解的看门狗其实是一个东西,即看门狗(Watchdog Timer,WDT)是一种特殊的定时器。它就像一个 “监督者”,用于监测微控制器系统的运行状态。当微控制器由于软件故障(如程序陷入死循环)、外部干扰(如电磁干扰导致程序跑飞)等原因不能正常运行时,看门狗会在设定的时间内没有被 “喂狗”(即没有执行复位操作)后,产生一个复位信号,使控制器重新启动,从而恢复系统的正常运行。

图片

source: https://blog.csdn.net/zerothpower/article/details/108616557

看门狗通常有一个计数器,它会按照一定的时钟源进行递增或递减计数。在正常情况下,程序需要在看门狗计数器溢出(达到设定的时间限制)之前对其进行复位操作(喂狗),这样计数器就会重新开始计数,避免产生复位信号。如果程序因为故障无法在规定时间内喂狗,计数器溢出就会触发复位。

以TI TPS3851为例,它是一个带有集成看门狗计时器的监控器,这使得它既能监控微控制器的供电,又能以外部方式监控来自微控制器的数字脉冲。一种实现方式是通过微控制器的数字信号输出(GPIO)接入到外部看门狗计时器的看门狗输入(WDI),如下图所示:

图片

Source: TI

微控制器定期向看门狗计时器发送脉冲,以表明系统软件运行正常。如果看门狗计时器在规定的时间范围内(称为看门狗超时)未接收到此脉冲,看门狗计时器就会断言一个复位输出。该复位输出可用于通知微控制器已出现卡顿或冻结,或用于复位微控制器本身。

下图描述了在看门狗超时内接收到的脉冲和在看门狗超时过后接收到的脉冲的两种情况:

图片

Source: TI

02、什么是硬件看门狗与软件看门狗?

看门狗通常分为硬件看门狗和软件看门狗,下面介绍下它们的主要类型及其工作原理。

2.1 硬件看门狗 

常见的硬件看门狗有三种:独立看门狗、窗口看门狗和问答型看门狗。

1) 独立看门狗

独立看门狗通常使用一个独立的定时器,比如STM32的独立看门狗,其时钟源为内部的独立40kHz的RC振荡器,计数器位宽为12位。当正常运行时,主控制器需在计数器减到0之前通过喂狗操作重置计数器;若未及时喂狗,计数器计数到末尾则会产生复位信号,使系统复位。

独立看门狗独立于CPU之外,有自己的时钟源和计数器,可在系统低功耗模式下运行,硬件成本低,软件配置简单,可靠性高,适用于对硬件可靠性要求不是特别严格的场合。

2)窗口看门狗

窗口看门狗除了有递减计数器外,还有上下窗口值的设定,喂狗操作必须在设定的窗口时间内进行,即要求喂狗的时间点必须落在窗口期内,否则就会触发复位信号。

我们可以通过下图来做了解:

图片

Source: https://www.allaboutcircuits.com/technical-articles/watchdog-timers

再比如英飞凌低压差稳压器TLE7273-2中的窗口看门狗,其每个看门狗窗口由一个打开的窗口和一个关闭的窗口组成,只有在打开的窗口期内接收服务才有效,否则报错。

总的来说,窗口看门狗对喂狗时间和系统运行逻辑有更严格的限制,能更精确地检测出系统异常,适用于时序要求严格的应用场景,比如工业控制等领域。

3)问答型看门狗

问答型看门狗要求微控制器按照要求执行一系列固定的对令牌值的算术运算,并将生成的令牌值返回给看门狗设备,设备验证微控制器是否在指定时间窗口内返回正确计算的响应,若不符合要求则视为异常事件,当异常事件计数达到预先定义的限制时,触发失败。

问答型看门狗必须每半个看门狗周期维护一次,这段时间由 WD_TIMER 和 WD_PRE 寄存器位配置的窗口时间定义。看门狗周期分为两个响应窗口,每个窗口占看门狗周期时间的 一半。在第一个窗口期间,控制器 1 读取问题并发送前三个答案。然后控制器等待在第二个窗口中发送第四个也是最后一个答案,在第二个窗口结束时,一个新的看门狗周期开始,该过程重复进行,如下所示:

图片

Source:


https://www.ti.com/lit/ug/slla546/slla546.pdf?ts=1747578322629&ref_url

问答型看门狗通过这种方式不仅监控微控制器是否在规定时间内响应,还对响应内容的正确性进行验证,进一步提高了系统可靠性,但同时也增加了控制软件的复杂度和硬件成本,常用于对功能安全等级要求较高的汽车系统,如驱动系统和制动系统等。

2.2软件看门狗

软件看门狗使用处理器的内部定时器来模拟实现定时器功能。在系统中,通过软件编程设定定时时间,在系统正常运行时,应用程序需在定时时间到达前进行喂狗操作,若未及时喂狗则触发相应的复位或处理机制。

比如采用外部看门狗监测单个CPU检测线程是否正常调度,这里假设软狗触发的时间为20s,那么一般软件看门狗的正常流程如下图示意:

图片

Source: 看门狗机制解析-CSDN博客

总的来说,软件看门狗无需额外的硬件支持,降低了硬件成本,简化了硬件电路设计,但可靠性相对较差,因为一旦系统内部定时器自身发生故障或CPU完全崩溃,软件看门狗可能无法正常工作。

03、什么内部看门狗与外部看门狗?

在汽车控制器应用工程中,经常采用内部看门狗和外部看门狗共同执行的方案,通常外部看门狗置于电源管理芯片的内部,而内部看门狗置于微控制器中,如下示意:

图片

Source: https://blog.csdn.net/usstmiracle/article/details/130950912

3.1 内部看门狗

内部看门狗是指集成在微控制器或SoC内部的硬件看门狗模块,其工作原理与独立看门狗类似,一般是基于内部的定时器和相关逻辑电路。在系统运行过程中,需要由软件进行喂狗操作,若未及时操作则触发复位。

内部看门狗属于硬件看门狗的一种,利用处理器内部资源实现,与其他内部模块协同工作更紧密,但若微控制器器内部出现严重故障,可能会导致内部看门狗失效。

3.2 外部看门狗

外部看门狗是一个独立于微控制器器的外部硬件设备,通过GPIO、I²C等接口形式与微控制器相连。外部看门狗通常有独立的电源和时钟,微控制器器需要在规定的时间内通过接口向外部看门狗发送喂狗信号,否则外部看门狗将认为系统出现故障,从而触发复位信号,使整个系统重启。

外部看门狗完全独立于主系统,不受主处理器和内部硬件的影响,可靠性极高,能够监控整个硬件平台,适用于对可靠性要求极高的场合,如服务器、工业设备等。

#04 小结

以上我们就介绍各类看门狗的基本概念与原理,从它们的逻辑关系来说,可以做如下小结:

首先,我们可以从硬件依赖程度来做划分,即:

1)硬件看门狗 :独立于处理器或系统的主要处理单元之外,拥有自己的时钟源、计数器等硬件资源,其工作原理基于硬件电路和定时器,通过外部硬件的独立运行来实现系统监控,可靠性高,不会因处理器内部故障而完全失效。比如独立看门狗、窗口看门狗、问答型看门狗。

2)软件看门狗 :完全依赖处理器的内部资源和软件编程来实现定时和监控功能,没有独立的硬件支持,其工作原理依赖于处理器内部的定时器或其他软件机制。在系统正常运行时通过软件逻辑进行喂狗操作,若系统出现严重故障,如处理器内部时钟故障或软件完全崩溃,则可能无法正常工作。

然后我们还可以从看门狗在系统中的位置来做划分,即:

1)外部看门狗 :作为一个独立的硬件设备存在于系统外部,与微控制器通过接口相连。它独立于主系统,有自己的电源和时钟,可以监控整个硬件平台的运行状态,不受主处理器内部故障的影响,具有最高的可靠性,适用于对可靠性要求极高的场合。

2)内部看门狗 :集成在微控制器器或 SoC 内部,作为处理器内部的一个模块,它与微控制器的其他内部模块紧密协作,利用微控制器内部的资源实现定时和监控功能。内部看门狗的优点是与系统内部架构高度集成,能够更直接地与内部模块进行交互,但若处理器内部出现严重故障,可能会导致内部看门狗失效。

总的来说,这些分类之间并不是完全独立的,而是相互关联、相互补充的。比如硬件看门狗中的独立看门狗可以是外部看门狗或内部看门狗,具体取决于其在系统中的位置。


来源:汽车电子与软件

评论 0
同类信息