搜档网
当前位置:搜档网 › 如何设计看门狗(硬件看门狗与软件看门狗)

如何设计看门狗(硬件看门狗与软件看门狗)

如何设计看门狗(硬件看门狗与软件看门狗)
如何设计看门狗(硬件看门狗与软件看门狗)

看门狗电路的概念和作用

2007/08/05 15:26

一般看门狗电路用来监视MCU内部程序运行状态,在程序跑飞或死锁情况下,可以自动复位。不过由于厂家、型号不同可能有些差别。

看门狗电路的工作原理是:当系统工作正常时,CPU将每隔一定时间输出一个脉冲给看门狗,即“喂狗”,若程序运行出现问题或硬件出现故障时而无法按时“喂狗”时,看门狗电路将迫使系统自动复位而重新运行程序。主要作用是防止程序跑飞或死锁

看门狗电路其实是一个独立的定时器,有一个定时器控制寄存器,可以设定时间(开狗),到达时间后要置位(喂狗),如果没有的话,就认为是程序跑飞,就会发出RESET指令

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"

看门狗电路电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位.

看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗。

硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使单片机复位。常用的WDT芯片如MAX813 ,5045, IMP 813等,价格4~10元不等.

软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。而T1的中断正常与否我们再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行。

51 系列有专门的看门狗定时器,对系统频率进行分频计数,定时器溢出时,将引起复位.看门狗可设定溢出率,也可单独用来作为定时器使用.

C8051Fxxx单片机内部也有一个21位的使用系统时钟的定时器,该定时器检测对其控制寄存器的两次特定写操作的时间间隔。如果这个时间间隔超过了编程的极限值,将产生一个WDT复位。

看门狗使用注意:大多数51 系列单片机都有看门狗,当看门狗没有被定时清零时,将引起复位。这可防止程序跑飞。设计者必须清楚看门狗的溢出时间以决定在合适的时候,清看门狗。清看门狗也不能太过频繁否则会造成资源浪费。程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器置数,即可预防溢出中断而引起的误复位。

看门狗运用:看门狗是恢复系统的正常运行及有效的监视管理器(具有锁定光驱,锁定任何指定程序的作用,可用在家庭中防止小孩无节制地玩游戏、上网、看录像)等具有很好的应用价值.

系统软件"看门狗"的设计思路:

1.看门狗定时器T0的设置。在初始化程序块中设置T0的工作方式,并开启中断和计数功能。系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的10次方) -1=65 535,T0输入计数频率是.Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。

2.计算主控程序循环一次的耗时。考虑系统各功能模块及其循环次数,本系统主控制程序的运行时间约为16.6 ms。系统设置"看门狗"定时器T0定时30 ms (T0的初值为65 536-30 000=35 536)。主控程序的每次循环都将刷新T0的初值。如程序进入"死循环"而T0的初值在30 ms内未被刷新,这时"看门狗"定时器T0将溢出并申请中断。

3.设计T0溢出所对应的中断服务程序。此子程序只须一条指令,即在T0对应的中断向量地址(000BH)写入"无条件转移"命令,把计算机拖回整个程序的第一行,对单片机重新进行初始化并获得正确的执行顺序

MAX813看门狗电路

看门狗电路设计 在工业现场运行的单片机应用系统,由于坏境恶劣,常有强磁场、电源尖峰、电火花等外界干扰,这些干扰可能造成仪表中单片机的程序运行出现“跑飞”现象,引起程序混乱,输出或显示不正确,甚至“死机”。系统无法继续正常的运行,处在一种瘫痪状态,它的硬件电路并没有损坏,只是内部程序运行出现了错误,这时,即使干扰消失,系统也不会恢复正常,这就需要采取一些措施来保障系统失控后能自动恢复正常,“程序运行几天来视系统”(Watchdog看门狗)就是常用的一种抗干扰措施,用以保证系统因干扰失控后能自动复位。为了提高仪表可靠性及抗干扰能力,通常在智能仪表中采用“看门狗”技术。 看门狗电路它实质上是一个可由CPU复位的定时器,它的定时时间是固定不变的,一旦定时时间到,电路就产生复位信号或中断信号。当程序正常运行时,在小于定时时间隔内,单片机输出一信号刷新定时器,定时器处于不断的重新定时过程,因此看门狗电路就不会产生复位信号或中断信号,反之,当程序因出现干扰而“跑飞”时,单片机不能刷新定时器,产生复位信号或产生中断信号使单片机复位或中断,在中断程序中使其返回到起始程序,恢复正常。 它的工作原理如同图3-4所示的两个计时周期不同的定时器T1和T2是两个时钟源相同的定时器,设T1=1.0s,T2=1.1s,而用T1定时器的溢出脉冲P1同时对T1和T2定时器清零,只要T1定时器工作正常,则定时器T2永远不可能计时溢出。当T1定时器不在计时,定时器T2则会计时溢出,并产生溢出脉冲P2。一旦产生溢出脉冲P2,则表明T1出了故障。这里的T2即是看门狗。利用溢出脉冲P2并进行巧妙的程序设计,可以检测系统的出错,而后使“飞掉”的程序重新恢复运行。 图3-4 看门狗工作原理示意图 看门狗电路的应用,使单片机可以在无人关态下实现连续工作。看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这

看门狗程序

TMS320F2812 Watchdog范例程序 FILE: Example_28xWatchdog.c // // TITLE: DSP28 Watchdog interrupt test program. // // ASSUMPTIONS: // // This program requires the DSP28 header files. To compile the // program as is, it should reside in the DSP28/examples/watchdog // sub-directory. // // As supplied, this project is configured for "boot to H0" operation. // // DESCRIPTION: // This program exercises the watchdog on the F2812/F2810 parts. // // First the watchdog is connected to the WAKEINT interrupt of the // PIE block. The code is then put into an infinite loop. // // The user can select to feed the watchdog key register or not // by commenting one line of code in the infinite loop. // // If the watchdog key register is fed by the KickDog function // then the WAKEINT interrupt is not taken. If the key register // is not fed by the KickDog function then WAKEINT will be taken. // // Watch Variables: // LoopCount for the number of times through the infinite loop // WakeCount for the number of times through WAKEINT // //########################################################################### // // Ver | dd mmm yyyy | Who | Description of changes // =====|=============|======|=============================================== // 0.57| 29 May 2002 | L.H. | Initial Release //########################################################################### // Step 0. Include required header files // DSP28_Device.h: device specific definitions #include statements for // all of the peripheral .h definition files. // DSP28_Example.h is specific for the given example. #include "DSP28_Device.h"

嵌入式系统看门狗的使用

嵌入式系统看门狗的使用随着32 位微控制器在嵌入式产品中的广泛应用,嵌入式操作系统也逐渐被大量应用。由于嵌入式操作系统的使用, 大大降低了复杂应用系统中软件开发的工作量, 使得嵌入式软件能够采用现代的软件开发技术进行代码编写和调试, 从而也提高了软件的质量。但在嵌入式应用中, CPU 必须可靠工作, 即使因为某种原因进入一个错误状态, 系统也应该可自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。 看门狗的基本原理 所谓“看门狗”是指在系统设计中通过软件或硬件方式在一定的周期内监控系统的运行状况。如果在规定时间内没有收到来自系统的触发信号, 则系统会强制复位, 以保证系统在受到干扰时仍然能够维持正常的工作状态。它主要有寄存器、定时器和看门狗模等部件构成, 其内部结构如图1 所示。 图1、看门狗内部结构 在这里看门狗的原理我想大家都已经比较熟悉,我不再罗嗦 关于看门狗在前后台运行的程序(无OS)上使用很简单,我们只需要定时的去喂狗就可以。但是对于使用的嵌入式操作系统的软件我们上面的简单喂狗方式就行不通了。原因是系统是会执行任务调度的。每一个任务在运行时就相当于一个前后台系统。任一时刻只会有一个任务获得CPU的支配权而运行。这样就要求我们必须在每一个任务中都要执行喂狗动作。这样一来虽然达到了及时喂狗而不至于让系统复位的目的,但是如果有一个任务现在异常而不能运行的话,或者是两个任务因为资源问题发生死锁,系统其它的任务还会继续喂狗。这样应用程序虽然出了问题,但是系统依然在按正常运行。 所以在OS中使用看门狗就变得复杂起来。 下面我说一下我是如何在OS中使用看门狗的。以uCOS-II在STM32的平台上使用为例首先我为每一个任务分配一个软件看门狗计数器。这样就形成了软件看门狗计数器队列。这个队列在系统中使用的是全局变量(关于全局变量的使用可以看我上面一篇的“谈谈在UCOS中使用全局变量”一文)。,设置一个优先级别最高的任务作为监视器,以监视各应用任务是否正常运行,该监视器即为软件看门狗.该任务对其他任务都设定一个计时器,每个被监视的任务在设定的时间内对软件看门狗中相应的定时器定时清零,即“喂软狗”.在其他任务都正常工作的情况下,软件看门狗对内置硬件看门狗定时器周期性清零,即“喂狗”.若某个任务出现故障,则该任务在设置的时间内对软件看门狗不“喂软狗”,此时与之对应的定时器溢出,软件看门狗发送指令,把该任务的堆栈地址指到其起始

软件看门狗和硬件看门狗

看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,但在可靠性方面不如硬件定时器,比如系统内部定时器自身发生故障就无法检测到。当然也有通过双定时器相互监视,这不仅加大系统开销,也不能解决全部问题,比如中断系统故障导致定时器中断失效。 看门狗本身不是用来解决系统出现的问题,在调试过程中发现的故障应该要查改设计本身的错误。加入看门狗目的是对一些程序潜在错误和恶劣环境干扰等因素导致系统死机而在无人干预情况下自动恢复系统正常工作状态。看门狗也不能完全避免故障造成的损失,毕竟从发现故障到系统复位恢复正常这段时间内怠工。同时一些系统也需要复位前保护现场数据,重启后恢复现场数据,这可能也需要一笔软硬件的开销。 图1:(a) 多任务系统看门狗示意图;(b) 相应的看门狗复位逻辑图。 在单任务系统中看门狗工作原理如上所述,容易实现。在多任务系统中情况稍为复杂。假如每个任务都像单任务系统那么做,如图1(a)所示,只要有一个任务正常工作并定期“喂狗”,看门狗定时器就不会溢出。除非所有的任务都故障,才能使得看门狗定时器溢出而复位,如图1(b)。 而往往我们需要的是只要有一个任务故障,系统就要求复位。或者选择几个关键的任务接受监视,只要一个任务出问题系统就要求复位,如图2(a)所示,相应的看门狗复位逻辑如图2(b)所示。 在多任务系统中通过创建一个监视任务TaskMonitor,它的优先级高于被监视的任务群Task1、Task2...Taskn。TaskMonitor在Task1~Taskn正常工作情况下,一定时间内对硬件看门狗定时器清零。如果被监视任务群有一个Task_x出现故障,TaskMonitor就不对看门狗定时器清零,也就达到被监视任务出现故障时系统自动重启的目的。另外任务TaskMonitor自身出故障时,也不能及时对看门狗定时器清零,看门狗也能自动复位重启。

如何设计看门狗(硬件看门狗与软件看门狗)

看门狗电路的概念和作用 2007/08/05 15:26 一般看门狗电路用来监视MCU内部程序运行状态,在程序跑飞或死锁情况下,可以自动复位。不过由于厂家、型号不同可能有些差别。 看门狗电路的工作原理是:当系统工作正常时,CPU将每隔一定时间输出一个脉冲给看门狗,即“喂狗”,若程序运行出现问题或硬件出现故障时而无法按时“喂狗”时,看门狗电路将迫使系统自动复位而重新运行程序。主要作用是防止程序跑飞或死锁 看门狗电路其实是一个独立的定时器,有一个定时器控制寄存器,可以设定时间(开狗),到达时间后要置位(喂狗),如果没有的话,就认为是程序跑飞,就会发出RESET指令 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗" 看门狗电路电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位. 看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

_看门狗_芯片的选择及软件控制

电子世界2004年1 期 26??单片机与可编程器件 “看门狗”芯片的选择 及软件控制 ?吉林化工学院自动化系 梁 伟 ?

电子世界2004年1期 27??单片机与可编程器件 个问题的方法就是做一个看门狗清除脉冲子程序,在延时等循环的圈内中加入它,可以保证万无一失。 2. 使用其它软件方法配合看门狗除了保证对看门狗的合理控制外,还要考虑使用其它软件方法配合看门狗,才能够保证MCU可靠运行。许多书籍在分析MCU失控后的情况时,几乎都假定一般是PC错位,进入未知区域,并不再进入正常程序代码段。但实际并非如此,以下就两种情况做具体分析,并给出解决方法。(1)干扰造成PC出错,但出错后进入了正常代码段,并在错误的情况下继续运行,看门狗没有起作用,但系统实际上已经瘫痪。解决这个问题可以使用软件路标法,几乎所有软件的主程序都是在一个大循环里工作,可以在循环中设置一些断点,断点处设置路标,程序运行 时随时检查路标,这样就可以判断程序是否有非法进入的可能。具体的路标可以是一个计数器,每个断点加1,在终点清除。因为断点数固定,因此每个断点处路标值固定,只需要检测路标值就可以进行对非法进入的判断。余下的问题就是发现错误后如何处理,正常的处理就是设置死循环,等待看门狗复位。对于PHILIPS的LPC系列MCU也可以置位AUXR1寄存器的SRST位立即进行软件复位。(2)干扰导致内部寄存器及RAM出错,但PC未错,因为错误的数据和标志导致程序在错误状态下运行。解决这种问题可以采用RAM校验的方法,具体是在MCU的内部RAM中开辟几个校验区,复位时写入固定代码,如55H或者AAH,并编制校验子程序,运行时随时调用校验,发现错误马上处理,处理方法同(1)。 考虑到可靠性,应该多设置几个校验区, 但要付出RAM资源代价,应酌情处理。此方法如果与(1)方法同时使用,则会获得更好的效果。 结束语 以上对看门狗的芯片选择和软件控制做了一些介绍,笔者通过合理运用,成功地设计出了许多应用系统,这些系统在恶劣的环境下都能够正常工作。但设计看门狗的初衷是防止系统万一死机的弥补措施,设计者本身是希望它永远也不要启动的。因此对于设计MCU系统,不应该过分依靠看门狗,而应该在电源及抗干扰措施上下足功夫,同时合理选择MCU芯片,尽可能选择那些抗干扰能力强,同时低EMI的品种。只有在各个环节都精心设计,才能够保证最终系统的可靠性。◆ Protel 99SE是基于Windows环境下的EDA电子辅助设计软件。一般来讲,利用Protel软件设计工程最基本的完整过程可以分为四大步骤:(1)查找资料,确定方案;(2)电路原理图的设计;(3)产生网络表;(4)印刷电路板的设计。 本文按照实际的设计流程顺序,来谈一谈如何使用Protel 99SE软件准确、高效地设计出电路原理图和设计印刷电路板的一些技巧。 电路原理图的设计 在电路原理图的设计过程中主要应 注意以下方面: 1.设置图纸 在设计开始之前首先要选择好图纸的大小,否则在打印时,若需将图纸由大号改为小号,而电路原理图不会跟着缩小,就存在部分原理图超出图纸范围打印不出来,从而返工的问题。通常的设计顺序为从左到右,从上到下。 2.放置元件 (1)利用元件库浏览器放置元件,对于元件库内未包括的元件要自己创建。创建的元件其引脚没有必要和实物一致, Protel 99SE 软件的实用技巧 ?上海海运学院商船学院轮机工程系 黄志坚 胡以怀? 可将功能相近或相同的引脚放到一起,以方便布线。(2)自创建元件时,还要注意,一定要在工作区的中央(0,0)处 (即“十”字形的中心) 绘制库元件,否则可能会出现在原理图中放置(place)制作的元件时,鼠标指针总是与要放置的元件相隔很远的现象。 (3) 在画原理图时,有时一不小心,使元件(或导线)掉到了图纸外面,却怎么也清除不了。这是由于Protel在原理图编辑状态下,不能同时用鼠标选中工作面内外的元件。要清除图纸外的元件,可点击 【Edit】/【Select】/【Outside Area】,然后框选整张图纸,再点击【Edit】/【Cut】即可。 元件放置好后,最好及时设置好其属性(Attributes),若找不到其相应的封装形式,也要及时为其创建适当的封装形式。 3.原理图布线 (1)根据设计目标进行布线。布线应该用原理图工具栏上的(Wiring Tools)工具,不要误用了(Drawing Tools)工具。(Wiring Tools)工具包含有电气特性,而(Drawing Tools)工具不具备电气特性,会导致原理图出错。 (2) 利用网络标号(Net Label)。网络标号表示一个电气连接点,具有相同网络标号的电气接线表明是连接在一起的。虽然网络标号主要用于层次式电路或多重式电路中各模块电路之间的连接,但若在同一张普通的原理图中也使用网络 标号,则可通过命名相同的网络标号使它们在电气上属于同一网络(即连接在一起),从而不用电气接线就实现了各引脚之间的互连,使原理图简洁明了,不易出错,不但简化了设计,还提高了设计速度。 4.编辑和调整编辑和调整是保证原理图设计成功很重要的一步。 (1)当电路较复杂、或是元器件的数目较多时,用手动编号的方法不仅慢,而且容易出现重号或跳号。重号的错误会在PCB编辑器中载入网络表时表现出来,跳号也会导致管理不便,所以Protel提供了很好的元件自动编号功能,应该好好地利用,即【Tools】/【Annotate...】。 (2)在原理图画好后,许多细节之处

基于ARM看门狗程序设计

课程结业实验报告 课程名称:嵌入式系统设计 报告题目:基于ARM的看门狗程序设计专业班级:通信1601班学号: 学生姓名: 指导教师: 2017 年 6 月20 日

看门狗实验 1 实验目的 (1) 了解WATCHDOG的作用; (2) 掌握WATCHDOG定时器的使用方法。 2 实验内容 (1) 编程添加看门狗功能,观察看门狗作用; (2) 编程实现看门狗喂狗。 3 实验基础知识 (1) 看门狗功能:嵌入式系统运行时受外部干扰或系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗电路(WATCHDOG)。看门狗的作用是当系统跑飞而进入死循环时,恢复系统的运行。 (2) 看门狗工作原理:设本系统程序完整运转一周的时间是Tp,看门狗定是周期是Ti,Ti>Tp, 在程序运行一周后就修改定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因是系统不能在Tp时刻修改定时器的数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用 在一个完整的嵌入式系统中或单片机小系统中通常都有看门狗定时器,且一般集成在处理器芯片中,看门狗实际上就是一个定时器,知识它在期满后将自动引起系统复位。(3)看门狗定时器计数值: 输入到计数器的时钟周期t_watchdog =1/(PCLK/Prescaler value + 1)/ Division_factor) 看门狗的定时周期T = WTCNT * t_watchdog (4)看门狗定时器寄存器 控制寄存器(WTCON) 数据寄存器(WTDAT) 计数器寄存器(WTCNT) 4 实验步骤

看门狗论文

文章导读:未来的内置看门狗必须有独立可靠的时钟。系统上电后,看门狗即为允许状态,无需软件设置,它只能被外部硬件跳线或内部熔丝(fuse)所禁止。目前,如果要求设计可靠性较高的嵌入式系统,外置看门狗是必须考虑的。 引言 软件的可靠性一直是一个关键问题。任何使用软件的人都可能会经历计算机死机或程序跑飞的问题,这种情况在嵌入式系统中也同样存在。由于单片机的抗干扰能力有限,在工业现场的仪器仪表中,常会由于电压不稳、电弧干扰等造成死机。在水表、电表等无人看守的情况下,也会因系统遭受干扰而无法重启。为了保证系统在干扰后能自动恢复正常,看门狗定时器(Watchdog Timer)的利用是很有价值的。 1 看门狗的作用 看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重新启动。 2 看门狗问题及相关实验 现今市面上流行的一些单片机,多嵌有内部WDT,如TI的MSP430系列,Philips的P87XXX 和P89XXX系列,Microchip的PIC列,Atmel的AT89SXX系列和Holtek公司的Htxxx系列。但是这些内部看门狗在工作时,多存在一定的误差。一些工程师在设计的过程中,由于忽略了这一点,导致系统出现异常。MSP430系列单片机是美国德州仪器公司(TI)近几年开发的新一代单片机,该系列是一款16位、具有精简指令集、超低功耗的全新概念混合型单片机。在众多单片机系列中,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为一颗耀眼的新星。其内部自带看门狗及复位电路,理论上如果程序跑飞,可用看门狗将其复位。但在实际使用过程中,发现看门狗的作用并非万无一失,以下实验证明了这一点。 实验电路如图1所示。

avr单片机看门狗程序

单片机看门狗程序 /*此程序实现单片机"看门狗"WDT的功能*/ #include "p18f458.h" unsigned long i; /*系统初始化子程序*/ void initial() { TRISD = 0X00; /*D口设为输出*/ } /*延时子程序*/ void DELAY() { for (i=19999;--i;) continue; } /*主程序*/ main () { initial(); /*初始化,设定看门狗的相关寄存器*/ PORTD = 0X00; /*D口送00H,发光二极管亮*/ DELAY(); /*给予一定时间的延时*/ PORTD = 0XFF; /*D口送FFH,发光二极管灭*/ while(1)

{ ; } /*死循环,等待看门狗溢出复位*/ } -------------------汇编语言版本的单片机看门狗程序---------------- ;此程序实现"看门狗"WDT的功能 ;此单片机看门狗由https://www.sodocs.net/doc/5218403848.html,独家提供 LIST P=18F458 INCLUDE "P18F458.INC" DEYH EQU 0X20 DEYL EQU DEYH+1 ORG 0X00 GOTO MAIN ORG 0X30 ;*************初始化子程序***************** INITIAL CLRF TRISD ;D口设为输出 RETURN ;**************延时子程序************************** DELAY MOVLW 0XFF MOVWF DEYH AGAIN1

第3版-基于CPLD的看门狗模块设计及实现

基于CPLD的智能看门狗设计与实现Referance to the design and relization of CPLD intellective watchdog 邹国民 Zou Guomin (江西联创通信有限公司,江西南昌330096) Jiangxi Lian Chuang Communication Corporation,Jiangxi Nanchang 330096) 摘要:智能看门狗是基于CPLD技术,使用VHDL语言实现的,具有功能灵活可变、参数设置方便、使用简单快捷等优点。由于CPLD具有可反复擦写/编程特性,为看门狗 的设计和调试提供方便。 关键词:智能看门狗;CPLD;VHDL Abstract:Intellective watchdog is relized by VHDL language and bases on CPLD technology which has overriding advantages of flexible and variable function ,simple and dirrect convenient parameter setting.it is more convenient to design and debug the intellective dog with the specificity of reversal erasing and programming. Keywords: Intelligence watchdog;CPLD;VHDL 1概述 1.1特种行业嵌入式产品设计看门狗的重要性 在煤炭、石油和化工等行业,运行着各类嵌入式通信产品。为保障生产活动平稳有序开展,要求嵌入式产品具备极高的可靠性,在持续不断电情况下,产品能够长期稳定运行。尤其在煤矿井下,产品可靠性显得尤为关键,当井下发生事故时,如因通信产品无法正常工作导致事故抢险不及时,将产生严重后果。 嵌入式系统经过几十年的发展,CPU运行速度越来越快,内存、闪存空间越来越多、硬件平台越来越复杂,软件代码越来越庞大。根据可靠性建模理论分析,产品的可靠性与产品复杂程度关系成反比,产品越复杂,可靠性系数越低; 为了克服复杂嵌入式产品所带来的可靠性问题,防止嵌入式产品主CPU因无法正常运

看门狗系统的设计

福建农林大学金山学院 《嵌入式系统原理及应用》课程设计报告 设计题目看门狗系统的设计 专业年级 13级电子科学与技术 姓名****** 学号 成绩 2016 年 6月28日

看门狗系统的设计 学号:136711069 姓名:江建淡 摘要:在嵌入式应用中,CPU必须可靠工作,系统由于种种原因,程序运行时会不按指定指令运行,导致死锁,系统无法运行下去,这时需能使系统复位即可使程序重新投入运行。看门狗(Watch Dog)技术就是实现崩溃系统的自动恢复,保证系统的稳定性。 一、课程设计目的 (1)了解WATCHDOG的作用; (2)掌握WATCHDOG的使用方法。 二、课程设计内容 (1)熟悉嵌入式开发环境的建立和使用 (2)演绎看门狗的功能 三、设计内容 看门狗WDT的基本原理:设某系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序运行一周后就重新设置定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的计数值,定时器将在Ti时刻溢出,引发系统复位,是系统得以重新运行,从而起到监控作用。 看门狗定时器的组成框图它唯一的时钟源MCLK,内部有8位预分频器(由WTCON[15:8]选择,最大28—1)将MCLK首次分频,通过与分屏器分频的值称为预分频值,然后按照16、32、64和128的系数通过多路选择开关(MUX)进行二次分频,这次分频的值称为分频系数,在看门狗定时器的控制寄存器作用下(WTCON[4:3])选择所需分频系数,得到WTD计数所需时钟,通过内部递减计数器(16位)WTC减

法计数,当没有加以干预,计数到0时,产生中断输出或产生复位信号RESET使系统复位。(如下看门狗定时器的组成框图) ARM7TDMI-S是一个通用的32位微处理器,它可提供高性能和低功耗。ARM 结构是基于精简指令集计算机(RISC)原理而设计的。指令集和相关的译码机制比复杂指令集计算机要简单得多。这样使用一个小的、廉价的处理器核就可实现很高的指令吞吐量和实时的中断响应。 使用了流水线技术,处理和存储系统的所有部分都可连续工作。通常在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出。

单片机看门狗(Watchdog)的工作原理及其应用

单片机看门狗(Watchdog)的工作原理及其应用 2010年05月16日星期日 23:00 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环。程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。所以,出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。 看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行。这个时候,看门狗电路就会由于得不到单片机送来的信号。便在它和单片机复位引脚相连的引脚上送出一个复位信号。使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。 看门狗,又叫 watchdog timer,是一个定时器电路。一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU 正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零。如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,是MCU复位,防止MCU死机。看门狗的作用就是防止程序发生死循环,或者说程序跑飞。 工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以,在使用有看门狗的芯片时要注意清看门狗。 硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在看门狗定时器定时时间到之前对其进行复位。如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。常用的WDT芯片如MAX813 ,5045, IMP 813等,价格4~10元不等。 软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。而T1的中断正常与否我们再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监

单片机看门狗电路的作用,看门狗系统设计技巧及其抗干扰措施

单片机看门狗电路的作用,看门狗系统设计技巧及其抗干扰措施在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称看门狗(watchdog) 其作用是使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。 单片机看门狗电路的作用看门狗的作用:看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择 的定时溢出归零,使处理器重新启动。软件的可靠性一直是一个关键问题。任何使用软件的人都可能会经历计算机死机或程序跑飞的问题,这种情况在嵌入式系统中也同样存在。由于单片机的抗干扰能力有限,在工业现场的仪器仪表中,常会由于电压不稳、电弧干扰等造成死机。在水表、电表等无人看守的情况下,也会因系统遭受干扰而无法重启。为了保证系统在干扰后能自动恢复正常,看门狗定时器(Watchdog TImer)的利用是很有价值的。 现今市面上流行的一些单片机,多嵌有内部WDT,如TI的MSP430系列,Philips的P87XXX

单片机看门狗程序

单片机看门狗程序 /*此程序实现单片机”看门狗”WDT的功能*/ #include”p18f458.h” unsignedlongi; /*系统初始化子程序*/voidinitial(){TRISD = 0X00;/*D 口设为输出*/} /*延时子程序*/voidDELAY(){for(i=19999;--i;)continue;} /*主程序*/main (){initial();/*初始化,设定看门狗的相关寄存器*/PORTD = 0X00;/*D 口送00H,发光二极管亮*/DELAY();/*给予一定时间的延时*/PORTD = 0XFF;/*D 口送FFH,发光二极管灭*/while(1){;}/*死循环,等待看门狗溢出复位*/} -------------------汇编语言版本的单片机看门狗程序----------------;此程序实现”看门狗”WDT的功能;此单片机看门狗由51hei 独家提供LISTP=18F458INCLUDE”P18F458.INC” DEYHEQU0X20DEYLEQUDEYH+1 ORG0X00GOTOMAINORG0X30 ;*************初始化子程序*****************INITIALCLRFTRISD;D 口 设为输出RETURN ;**************延时子程序 **************************DELAYMOVLW0XFFMOVWFDEYHAGAIN1M OVLW0XFFMOVWFDEYLAGAIN2DECFSZDEYLGOTOAGAIN2DECFSZDEY HGOTOAGAIN1NOPRETURN ;************单片机看门狗主程序

基于ARM看门狗程序设计

. 课程结业实验报告 课程名称:嵌入式系统设计 报告题目:基于ARM的看门狗程序设计 专业班级:学号:班1601通信 学生姓名: 指导教师: 20 月年2017 6 日 .. . 看门狗实验

1 实验目的 (1) 了解WATCHDOG的作用; (2) 掌握WATCHDOG定时器的使用方法。 2 实验内容 (1) 编程添加看门狗功能,观察看门狗作用; (2) 编程实现看门狗喂狗。 3 实验基础知识 (1) 看门狗功能:嵌入式系统运行时受外部干扰或系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗电路(WATCHDOG)。看门狗的作用是当系统跑飞而进入死循环时,恢复系统的运行。 (2) 看门狗工作原理:设本系统程序完整运转一周的时间是Tp,看门狗定是周期是Ti,Ti>Tp, 在程序运行一周后就修改定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因是系统不能在Tp时刻修改定时器的数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用 在一个完整的嵌入式系统中或单片机小系统中通常都有看门狗定时器,且一般集成在处理器芯片中,看门狗实际上就是一个定时器,知识它在期满后将自动引起系统复位。 (3)看门狗定时器计数值: 输入到计数器的时钟周期t_watchdog =1/(PCLK/Prescaler value + 1)/ Division_factor) 看门狗的定时周期T = WTCNT * t_watchdog (4)看门狗定时器寄存器 控制寄存器(WTCON) 数据寄存器(WTDAT) 计数器寄存器(WTCNT) 4 实验步骤 .. . (1) 新建一个工程watchdog,添加相应的文件,并修改watchdog的工程设置;创建watchdog.c并加入到工程watchdog中,部分参考代码如下: /* functions */ void rtc_tick_isr(void) __attribute__ ((interrupt(IRQ)));; void rtc_int_isr(void) __attribute__ ((interrupt(IRQ)));; //设置寄存器参数 #define WDT_ENABLE (0x01<<5) (0x01<<2) #define WDT_INT_ENABLE

基于51单片机的看门狗程序

基于51单片机的看门狗程序 #include sbit CS= P2^7; sbit SO= P2^6; sbit SCK= P2^5; sbit SI= P2^4; #define WREN 0x06 // #define WRDI 0x04 // #define RDSR 0x05 // #define WRSR 0x01 // #define READ0 0x03 // #define READ1 0x0b // #define WRITE0 0x02 // #define WRITE1 0x0a // #define uchar unsigned char uchar ReadByte() //read a byte from device { bit bData; uchar ucLoop; uchar ucData; for(ucLoop=0;ucLoop<8;ucLoop++) { SCK=1; SCK=0; bData=SO; ucData<<=1; if(bData) { ucData|=0x01; } } return ucData; } void WriteByte(uchar ucData)//write a byte to device { uchar ucLoop; for(ucLoop=0;ucLoop<8;ucLoop++) { if((ucData&0x80)==0) //the MSB send first {SI=0;} else {SI=1;} SCK=0; SCK=1; ucData<<=1; }

} uchar ReadReg() //read register { uchar ucData; CS=0; WriteByte(RDSR); ucData=ReadByte(); CS=1; return ucData; } uchar WriteReg(uchar ucData) //write register { uchar ucTemp; ucTemp=ReadReg(); if((ucTemp&0x01)==1) //the device is busy return 0; CS=0; WriteByte(WREN);//when write the WREN, the cs must have a high level CS=1; CS=0; WriteByte(WRSR); WriteByte(ucData); CS=1; return 1; } void WriteEpm(uchar cData,uchar cAddress,bit bRegion) /* 写入一个字节,cData为写入的数,cAddress为写入地址,bRegion为页*/ { while((ReadReg()&0x01)==1); //the device is busy CS=0; WriteByte(WREN); //when write the wren , the cs must have a high level CS=1; CS=0; if(bRegion==0) { WriteByte(WRITE0);} //write the page addr else {WriteByte(WRITE1);} WriteByte(cAddress); WriteByte(cData); SCK=0; // CS=1; } uchar ReadEpm(uchar cAddress,bit bRegion)

软件看门狗系统及方法

说明书摘要 KHP141110067.1 本发明提供了一种软件看门狗系统及方法,该系统包括:基于内核的虚拟机KVM,以及安装于KVM上的语义重构模块、故障检测模块、策略模块、恢复模块;KVM上的虚拟机监控器,用于获取物理主机的内存信息;语义重构模块,用于根据虚拟机监控器获取的物理主机的内存信息重构出客户虚拟机上的语义信息;故障检测模块,用于根据语义重构模块重构出的客户虚拟机上的语义信息检测客户虚拟机的隐藏进程、关键用户进程和系统调用的完整性,输出检测结果;策略模块,用于根据检测结果和用户配臵的恢复策略,生成恢复指令;恢复模块,用于根据策略模块产生的恢复指令进行恢复操作。本发明的系统及方法,能够同时监控多个客户虚拟机,操作简单,处理高效。

摘 要 附 图 语义重构模块故障检测模块策略模块恢复模块 虚拟机监控器基于内核的虚拟机 101 102 103 104105 KHP141110067.1

权利要求书 KHP141110067.1 1、一种软件看门狗系统,其特征在于,该系统包括: 基于内核的虚拟机KVM,以及安装于KVM上的语义重构模块、故障检测模块、策略模块、恢复模块; KVM上的虚拟机监控器,用于获取物理主机的内存信息; 语义重构模块,用于根据虚拟机监控器获取的物理主机的内存信息重构出客户虚拟机上的语义信息; 故障检测模块,用于根据语义重构模块重构出的客户虚拟机上的语义信息检测客户虚拟机的隐藏进程、关键用户进程和系统调用的完整性,输出检测结果; 策略模块,用于根据故障检测模块的检测结果和用户配臵的恢复策略,生成恢复指令; 恢复模块,用于根据策略模块产生的恢复指令进行恢复操作; 其中,所述物理主机包括:一个宿主虚拟机和至少一个客户虚拟机,所述宿主虚拟机为所述KVM。 2、根据权利要求1所述的系统,其特征在于,所述恢复指令,包括:启动某个进程,终止某个进程,启动虚拟机,重启虚拟机,从镜像文件恢复虚拟机。 3、根据权利要求1所述的系统,其特征在于,所述策略模块,还用于根据用户输入的进程配臵信息确定关键用户进程。 4、一种基于权利要求1至3中任一软件看门狗系统的检测方法,其特征在于,该方法包括: KVM上的虚拟机监控器获取物理主机的内存信息; 语义重构模块根据虚拟机监控器获取的物理主机的内存信息重构出客户虚拟机上的语义信息; 故障检测模块根据语义重构模块重构出的客户虚拟机上的语义信息检测客户虚拟机的隐藏进程、关键用户进程和系统调用的完整性,

相关主题