为了使工业路由器、DTU、串口服务器等联网设备传输更稳定,这些设备中会带有防浪涌、防静电、防脉冲以及看门狗保护。这些硬件保护中,有一种是可以保持设备内部进程24小时不宕机的——看门狗技术。看门狗是如何工作和计算的呢?
看门狗芯片,又叫看门狗定时器。它是微控制器中的一块硬件。如果系统卡在某个地方, 则看门狗定时器用于生成系统复位,如果系统进入执行的无穷循环,则看门狗定时器会将系统复位以摆脱无穷循环。看门狗是嵌入式系统中的安全机制,可使您的系统可靠,但是它取决于看门狗定时器的使用方式。
看门狗基本上是一个计数器,它从计数零开始并达到某个值。 如果计数器达到某个值,则看门狗硬件将生成看门狗复位。为了避免系统重置,软件需要启动看门狗, 即需要将计数器重置为零。万一软件陷入无休止的循环,系统将无法踢看门狗,因此计数器达到一定值并复位系统。
看门狗最初加载了某些值。该值是根据看门狗的超时时间计算的(进一步说明了如何根据超时值计算计数器值)。在超时之前,系统应重置计数器。
例如,如果您的系统定期执行3个任务并执行3个任务需要500毫秒。然后将超时时间视为600 ms(考虑最坏的情况),针对600 ms计算计数器值并将其加载到看门狗中。
考虑看门狗中的系统正在以4 kHz时钟工作。系统在450毫秒内完成工作,最坏情况下,完成工作的时间为500毫秒。让我们将500毫秒作为超时时间。
1/4 kHz = 0.25毫秒
1个时钟节拍= 0.25毫秒。
500毫秒= 2000个滴答声。
当时钟滴答2000次时,完成500毫秒。与超时相关的技术器值为2000.
如果看门狗计数器达到2000,它将生成一个复位信号。在达到2000之前,系统需要将计数器复位为0。
在操作系统(多任务系统)的情况下,看门狗起着重要的作用。看门狗可以监视程序流,监视任务执行的频率(活动监督)。如果看门狗发现程序流冲突或任务执行得太频繁或不那么频繁,则会生成看门狗复位。在进行在线监督的情况下,每个任务都会设置一个标志,以指示任务处于在线状态,即已执行。看门狗监控器功能将检查每个任务是否都报告了活动指示。如果任务未设置为激活指示,则看门狗监视器功能将永远不会踢看门狗,最后看门狗将重置系统。