0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

看门狗芯片的应用场景

姚小熊27 来源:英锐恩 作者:英锐恩 2020-06-26 14:27 次阅读

对于那些人类无法持续监视的嵌入式系统看门狗芯片可能是个很好的解决方案。英锐恩单片机开发工程师表示,大多数嵌入式系统需要自主处理异常,如果运算跑偏了,通常不可能等人们重新引导他们。这种情况下需要一个复位芯片,以引导嵌入式系统的重启。

看门狗芯片是一种硬件,可以用来自动检测软件异常,并在发生任何异常时重置处理器。一般来说,看门狗芯片基于一个从某个初始值递减到零的计数器。嵌入式软件选择计数器的初始值并定期重新启动它。如果计数器在软件重新启动之前达到零,则认为软件发生故障,并且处理器的复位信号有效。处理器(及其运行的嵌入式软件)将重新启动,就像人工操作员已关闭电源再打开一样。

如下图所示,看门狗芯片是处理器外部的芯片。但是,它也可以与CPU包含在同一芯片中。这是在许多单片机中完成的。无论哪种情况,看门狗芯片的输出都直接与处理器的复位信号相关。

看门狗芯片的应用场景

一、什么是踢狗(也叫:喂狗)

重新启动看门狗芯片计数器的过程有时称为“踢狗(喂狗)”。踢狗的作用作用主要是起到复位重启的作用,确保机器能够一直运行。

如下面的案例1中,做了一个简单的示例。这里,我们有一个无限循环来控制系统的整个行为。这种软件体系结构在许多具有低端处理器和基于单个工作频率的行为的嵌入式系统中很常见。该看门狗的硬件实现允许通过内存映射寄存器设置计数器值。

uint16 volatile * pWatchdog =

(uint16 volatile *) 0xFF0000;

main(void)

{

hwinit();

for (;;)

{

*pWatchdog = 10000;

read_sensors();

control_motor();

display_status();

}

}

案例1:踢狗

假设循环必须每五毫秒至少执行一次。(假设必须至少经常向电动机提供新的控制参数。)如果看门狗芯片的计数器初始化为与经过的时间(即10000毫秒)对应的五毫秒的值,并且软件没有错误,看门狗芯片将永远不会到期,软件将始终在达到零之前重新启动计数器。

二、软件异常

看门狗芯片可以使系统摆脱许多危险情况。但是,如果要有效,必须在整个软件设计中考虑复位看门狗芯片。设计人员必须知道其软件可能出什么问题,并确保看门狗芯片能够检测到它们(如果有的话)。

系统挂起有多种原因。导致执行无限循环的逻辑谬误是最简单的。假设这种情况发生在案例1的read_sensors()调用中。其他任何软件(ISR除外,如果仍然启用中断)都不会再次运行。

另一种可能性是,在循环的一次通过期间,异常数量的中断到达。在ISR中花费的任何额外时间就是没有花费在执行主循环上的时间。可能会给电机新的控制指令带来危险的延迟。

使用多任务内核时,可能会发生死锁。例如,一组任务可能会卡在彼此之间等待,并且其中一个需要一些外部信号,从而使整个任务组无限期地挂起。

如果此类故障是瞬态的,则每次看门狗引起的复位后,系统可能会在一段时间内正常运行。但是,发生故障的硬件可能会导致系统不断重置。因此,计算看门狗引起的复位次数并在固定次数的故障后放弃尝试可能是明智的。

三、Karate框架接口测试

实际的看门狗实现通常会具有一个与案例1中的软件相比更为复杂的软件接口。当重置看门狗所需的指令集非常简单时,有漏洞的软件可能会偶然执行此操作。考虑一个错误,该错误导致将值10000一次又一次地写入内存中的每个位置。此代码将定期重新启动看门狗计数器,并且看门狗可能永远不会咬人。为防止这种情况,许多看门狗实现要求使用两个或多个连续写入的复杂序列来重新启动看门狗芯片。

如果看门狗内置在你的单片机中,则在设备复位时可能不会自动启用它。你必须确保在硬件初始化期间启用它。为了提供保护以防止意外禁用看门狗的错误,硬件设计通常使得一旦启用看门狗芯片就无法禁用它。

如果你的软件可以比看门狗周期更快地完成一个完整的循环,那么案例1中的结构可能对你来说很好。如果你的软件的某些部分需要很长时间才能完成,那么挑战就更大了。假设你有一个循环,等待元素加热到一定温度再返回。许多看门狗芯片的最长持续时间约为两秒钟。如果你要延迟的时间超过该时间长度,则可能必须在等待循环中踢狗。如果你的软件中有很多这样的地方,看门狗的控制可能会出现问题。

系统初始化是代码的一部分,通常需要比看门狗芯片的最大时间更长的时间。也许进行内存测试或从ROMRAM的数据传输会减慢此速度。因此,某些看门狗可以比其后继踢等待更长的时间来等待他们的第一个踢。

随着将控制线程添加到软件中(以ISR和软件任务的形式),在代码中仅放置一处看门狗变得无效。所以,选择合适的踢脚间隔也是一个重要问题,这只能以系统特定的方式解决。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计数器
    +关注

    关注

    32

    文章

    2256

    浏览量

    94680
  • 看门狗芯片
    +关注

    关注

    0

    文章

    19

    浏览量

    6124
收藏 人收藏

    评论

    相关推荐

    安利给工程师!看门狗相关知识

    适当的参数来确保系统在正常运行和故障场景下都能自动恢复。​ ▼ 看门狗简介 ▼ 看门狗(Watch Dog Timer,WDT) ——是一种监控电路,主要应用于嵌入式系统,目的是为了提高系统的可靠性和稳定性。在
    的头像 发表于 12-31 14:29 110次阅读
    安利给工程师!<b class='flag-5'>看门狗</b>相关知识

    抄作业!看门狗定时器必备知识

    Air201在模组内部集成了硬件看门狗,今天就一起来聊聊~ 本文将带你了解看门狗的工作原理、应用架构、定时时间设置、软硬件看门狗的区别,以及看门狗定时器的典型应
    的头像 发表于 12-30 14:44 151次阅读
    抄作业!<b class='flag-5'>看门狗</b>定时器必备知识

    一文详解看门狗/电压监控芯片规格书

    一、关于一些看门狗、电压监控的疑问?1.什么是看门狗看门狗,又叫Watchdog,本质上来说就是一个定时器电路,一般有一个输入和一个输出,其中输入叫做喂狗,输出一般连接到另外一个部分的复位端,一般
    的头像 发表于 12-26 17:18 195次阅读
    一文详解<b class='flag-5'>看门狗</b>/电压监控<b class='flag-5'>芯片</b>规格书

    常用硬件看门狗电路

    硬件看门狗电路分享
    的头像 发表于 12-18 14:09 563次阅读
    常用硬件<b class='flag-5'>看门狗</b>电路

    看门狗定时器的工作原理

    看门狗定时器是一种独立的计时器硬件模块,其核心功能是倒计时。如果系统软件在计时器超时前没有对其进行复位操作(即“喂狗”),看门狗将触发一个预定义的动作,通常是系统复位或中断。
    的头像 发表于 10-21 14:18 478次阅读
    <b class='flag-5'>看门狗</b>定时器的工作原理

    单片机开发:使用内部看门狗定时器(WDT)还是外挂看门狗芯片

    在电子产品中,有时候需要看门狗定时器(WDT),看门狗芯片有外部和内置两种。在设计之初,要不要使用看门狗芯片?这是个值得考虑的问题。在本文中
    发表于 09-25 13:46

    Sitara AM6442 RTI看门狗调试

    电子发烧友网站提供《Sitara AM6442 RTI看门狗调试.pdf》资料免费下载
    发表于 08-27 11:26 0次下载
    Sitara AM6442 RTI<b class='flag-5'>看门狗</b>调试

    【GD32F470紫藤派开发板使用手册】第七讲 FWDG-看门狗实验

    通过本实验主要学习以下内容: 独立看门狗的原理 独立看门狗功能介绍 实现独立看门狗功能
    的头像 发表于 05-11 10:13 1179次阅读
    【GD32F470紫藤派开发板使用手册】第七讲 FWDG-<b class='flag-5'>看门狗</b>实验

    【GD32H757Z海棠派开发板使用手册】第七讲 FWDG-看门狗实验

    通过本实验主要学习以下内容: 独立看门狗的原理 独立看门狗功能介绍 实现独立看门狗功能
    的头像 发表于 05-10 09:37 794次阅读
    【GD32H757Z海棠派开发板使用手册】第七讲 FWDG-<b class='flag-5'>看门狗</b>实验

    软件看门狗和硬件看门狗的区别

    系统出现了故障或死锁,软件看门狗会自动重启系统或执行其他预定义的操作。软件看门狗通常用于嵌入式系统中,可以方便地进行编程和控制。硬件看门狗则是一种独立的硬件设备,它与计算机主板上的芯片
    的头像 发表于 04-16 15:10 1119次阅读

    TLF35584中集成的看门狗工作应用案例

    看门狗输入引脚 WDI 具有集成的下拉电流 IWDI 。看门狗输入 WDI 可以在“Closed Window”内或随后的“Open Window”期间转换为高电平。
    发表于 03-18 11:27 3937次阅读
    TLF35584中集成的<b class='flag-5'>看门狗</b>工作应用案例

    调试模式下如何调试看门狗

    大家在调试GD32 MCU系统的时候,若开了看门狗外设,是否会碰到进入调试模式看门狗就会咬造成无法调试的问题?
    的头像 发表于 02-23 09:30 1288次阅读
    调试模式下如何调试<b class='flag-5'>看门狗</b>?

    求助,关于看门狗定时器的喂狗时间和多APP看门狗的问题求解

    参考例程,在看门狗定时器时间的配置上,我看到如下函数: /* Step 3- Write match value */ #if(WDT_DEMO == WDT_INTERRUPT_DEMO
    发表于 02-21 06:50

    什么是看门狗?如何实现对系统程序的监控?

    看门狗通过定时器计数器和相关的控制逻辑来实现功能。在系统正常运行时,定时器会以固定的时间间隔重复计数,如果系统一切正常,那么定时器会定期被重置。
    的头像 发表于 02-02 15:58 2558次阅读

    ADUC7024的看门狗能不能在看门狗定时没有到之前,将看门狗给关了啊?

    ADUC7024的看门狗能不能在看门狗定时没有到之前(即没有复位之前),将看门狗给关了啊?
    发表于 01-15 08:17