硬件看门狗和软件看门狗有什么区别?

14

硬件看门狗和软件看门狗有什么区别?

2个回答

16
硬件看门狗是指硬件,而软件看门狗则是指软件。对于硬件看门狗,如果硬件未被频繁地“喂狗”,那么它会认为软件已经挂起并将重置系统,通常是根据设计规定进行操作。 硬件被认为比软件更可靠。 对于软件看门狗,一个软件任务/线程/其他被认为比另一个更可靠,如果可疑代码未能触发可靠代码,则可靠代码会终止可疑代码(或者根据设计进行其他操作)。 如果由于硬件故障而导致可疑代码失败,可能会导致所有代码崩溃,包括软件看门狗在内。 因此,只有当您以某种方式运行看门狗时,该看门狗比相关任务更可靠时,软件看门狗才有用,例如,它可以防止任务走出其内存空间并引发保护故障(您本可以设置故障处理程序来监视,而不是设置看门狗,但无论如何)...

在许多情况下,硬件和看门狗方法可以结合使用。例如,许多系统只有一个或最多两个硬件看门狗,但是“喂养”这些看门狗的例行程序也可以确保许多其他应该发生的事情实际上正在发生。 - supercat

10

如果软件没有(定期)防止关机,硬件看门狗会自动重置系统;相反,软件看门狗只有在给定CPU时间时才能做些什么。因此,它必须定期检查系统是否需要重置,并通过编程硬件对其进行响应。

结果是,软件看门狗可能无法响应于系统崩溃。

这些的典型编程模型是:

HW watchdog:   [HW circuit]  <-- [low priority timer interrupt postponing reset]
--
vs.
--
SW watchdog:   [Low priority SW process feeding SW Watchdog]
           +   [High priority SW process requiring "food"]

  1. 这(软件看门狗)是否意味着即使没有看门狗定时器硬件,也可以采用看门狗机制?
  2. OTOH是什么?
- M Sharath Hegde
看门狗定时器(HW)是微控制器内部的吗? - M Sharath Hegde
你需要查阅微控制器的参考手册。现在,看门狗定时器已经成为任何SoC的重要组成部分;但是,将看门狗功能外置到一个单独的单元中也是有意义的,该单元集成了RTC和电源管理等功能,因为系统的不同部分可能需要在不同的阶段关闭。 - Aki Suihkonen
在阅读了这篇文章,特别是第16.2.2.1节之后,我逐渐感到SWT(软件看门狗定时器)中的“软件”部分是具有误导性的。 - M Sharath Hegde
我想知道一个没有任何软件的硬件工作定义会是什么样子。同时,人们可以怀疑一个仅有软件的工作定义是不可能的概念。 - Aki Suihkonen
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接