看门狗,制作材料

上传人:bin****86 文档编号:60230210 上传时间:2018-11-14 格式:DOCX 页数:14 大小:23.35KB
返回 下载 相关 举报
看门狗,制作材料_第1页
第1页 / 共14页
看门狗,制作材料_第2页
第2页 / 共14页
看门狗,制作材料_第3页
第3页 / 共14页
看门狗,制作材料_第4页
第4页 / 共14页
看门狗,制作材料_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《看门狗,制作材料》由会员分享,可在线阅读,更多相关《看门狗,制作材料(14页珍藏版)》请在金锄头文库上搜索。

1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划看门狗,制作材料嵌入式系统看门狗的使用随着32位微控制器在嵌入式产品中的广泛应用,嵌入式操作系统也逐渐被大量应用。由于嵌入式操作系统的使用,大大降低了复杂应用系统中软件开发的工作量,使得嵌入式软件能够采用现代的软件开发技术进行代码编写和调试,从而也提高了软件的质量。但在嵌入式应用中,CPU必须可靠工作,即使因为某种原因进入一个错误状态,系统也应该可自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。看门狗的基本原理所谓“看门狗”是指在系统设计中通过软件或硬件方式在一

2、定的周期内监控系统的运行状况。如果在规定时间内没有收到来自系统的触发信号,则系统会强制复位,以保证系统在受到干扰时仍然能够维持正常的工作状态。它主要有寄存器、定时器和看门狗模等部件构成,其内部结构如图1所示。图1、看门狗内部结构在这里看门狗的原理我想大家都已经比较熟悉,我不再罗嗦关于看门狗在前后台运行的程序上使用很简单,我们只需要定时的去喂狗就可以。但是对于使用的嵌入式操作系统的软件我们上面的简单喂狗方式就行不通了。原因是系统是会执行任务调度的。每一个任务在运行时就相当于一个前后台系统。任一时刻只会有一个任务获得CPU的支配权而运行。这样就要求我们必须在每一个任务中都要执行喂狗动作。这样一来虽

3、然达到了及时喂狗而不至于让系统复位的目的,但是如果有一个任务现在异常而不能运行的话,或者是两个任务因为资源问题发生死锁,系统其它的任务还会继续喂狗。这样应用程序虽然出了问题,但是系统依然在按正常运行。所以在OS中使用看门狗就变得复杂起来。下面我说一下我是如何在OS中使用看门狗的。以uCOS-II在STM32的平台上使用为例首先我为每一个任务分配一个软件看门狗计数器。这样就形成了软件看门狗计数器队列。这个队列在系统中使用的是全局变量。,设置一个优先级别最高的任务作为监视器,以监视各应用任务是否正常运行,该监视器即为软件看门狗该任务对其他任务都设定一个计时器,每个被监视的任务在设定的时间内对软件看

4、门狗中相应的定时器定时清零,即“喂软狗”在其他任务都正常工作的情况下,软件看门狗对内置硬件看门狗定时器周期性清零,即“喂狗”若某个任务出现故障,则该任务在设置的时间内对软件看门狗不“喂软狗”,此时与之对应的定时器溢出,软件看门狗发送指令,把该任务的堆栈地址指到其起始地址,重启该任务当在设定的次数内不能有效启动,则监视器任务延时“喂狗”,内置硬件看门狗计数器溢出,自动重启系统另外,当监视器任务本身或系统硬件出现故障时,不能及时对硬件看门狗定时器清零,则重启系统监控软件狗的任务原理图如下:12345系统的实现过程本软件看门狗通过检查各应用任务是否在规定的时间内对其“喂软狗”来确定各任务的运行状态,

5、硬件看门狗通过检查软件看门狗是否在规定的时间内对其“喂狗”来实现对监视器任务的监视通过微处理器的定时器中断机制,为每个任务分配计时单元和运行标志系统具体的执行操作如下:1)系统中某任务空闲时,以小于“喂软狗”设定的时间间隔为周期,周期性地“喂软狗”2)在该任务执行时,预计执行所需的最长耗时,并用稍大于该最大耗时的时问间隔设置监视器中与其对应的定时器参数,同时中断周期性“喂软狗”模块,启动监视器任务中的定时器倒计数当该任务正常执行完毕时,发送信号“喂软狗”,对定时器清零,复位该任务供下次使用,同时恢复周期性“喂软狗”模块3)当任务出现异常时,不能在设定的时间间隔内完成该任务,不能对软件看门狗及时

6、清零,使得监视器中相应的定时器溢出,监视器任务通过内核服务发送指令,把该任务的堆栈地址指到其起始地址,重启该任务,累计其复位次数,同时把该任务的计时器清零如果在设定的次数内不能够有效启动该任务,软件看门狗则延时喂内置硬件看门狗,内置看门狗计数器溢出,自动重启系统当系统主程序出现问题或者系统硬件出问题时,软件按看门狗也延迟“喂狗”,重新启动系统,以确保系统长时间稳定运行这个方法已经成功运行于我的项目,再次分享出来。方便大家的使用目前,在许多情况下,设计人员会用软件实现以往由硬件才能完成的电路功能,其中部分原因是低成本的微处理器(P)为大家提供了广泛的选择。软件常常是解决问题成本最低、灵活性最高的

7、方案,但它也迫使设计人员进行一些额外的测试以确保系统的可靠性。当然,如果程序没有代码错误也就不存在上述问题,细心的测试能够在1000条指令中减少1至10条错误。而设计人员则希望在10,000条指令中出错率不要超过十处。在台式机系统中出现导致系统瘫痪的软件错误并不可怕,因为用户只需重新启动系统即可,它只会造成少量数据的丢失。然而,对于运行在工控系统的软件,系统则必须能够在没有人为干预的条件下恢复故障。这一特性在两种情况下非常关键:一种是高有效性系统,如服务器、电话系统以及生产线等;另一种是高可靠性系统,因为这种系统一旦出现错误将造成伤害,如汽车、医疗设备、工业控制、机器人、自动门等。即使不考虑这

8、些要求严格的应用,系统在无需用户干预的条件下自动(按下复位键或重新上电)从故障状态下恢复也是很有益处的,这种设备的好处是显而易见的,因为用户不希望设备内部出现问题。改善这类系统可靠性的一种简单、有效的措施是采用看门狗电路。1看门狗看门狗实际上是一个计数器,它需要在一定的看门狗延时周期内被清零,如果没有清零动作,看门狗电路将产生一个复位信号以使系统重新启动或建立一个非屏蔽中断(NMI)并执行故障恢复子程序。大多数看门狗电路是沿触发,这样,无论是上升沿还是下降沿触发看门狗的输入端(WDI)通常都能够清计数器。WDI引脚一般连接在处理器的一个I0口,这条口线可由软件触发。图1所示是微处理器通过在WD

9、l脚发送脉冲清除看门狗定时器以防止复位的连接方式,实际上,清看门狗计数器的命令必须在主程序内。如果看门狗没有被清零,复位后软件将从地址为0000(启动程序)的子程序处开始运行。计算主程序的运行时间往往很困难,因为在此期间可能需要多次调用子程序,这与系统输入有关。因此,设计人员常常选择看门狗延时周期远远高于测试到的或计算出的循环时间。图2所示是正常工作情况下(看门狗在延时周期内被请零)的看门狗信号和复位信号。图3所示为看门狗计数器溢出时引发一次复位的时序示意图。工业标准的看门狗电路延时周期一般在l00ms2s范围内,当然,也有些可调节或定制的看门狗电路能够覆盖更宽的延时范围(30ms至几分钟)。

10、如果主程序的执行时间对于看门狗电路而言过长,设计人员可以在主程序的不同部位多次执行看门狗触发命令,也可以选用看门狗延时周期更长的器件。一种防止系统滞留在死循环的技术是在主程序的初始化部分将相应的IO引脚置为高电平,而在主程序的另一部分将其置为低电子。如果软件在主程序的起始部分进入了死循环,由于WDI始终保持高电平,看门狗将产生延时输出而使系统复位。如果采用一个低-高-低的脉冲,看门狗将被清零,但系统仍处于阻塞状态。为解决这个问题,一种比较成熟的方法是对程序中的多项任务进行监视,并对每项任务设置一个标志,只有当全部标志置位后,看门狗电路才被触发。执行全部任务的时间要比看门狗超出周期短。在更复杂的

11、系统中,还存在一些潜在问题,如存储器泄漏、堆栈溢出等,此时系统同样需要对这些情况进行监视,尽管对这些问题的讨论超出了本文的范围,但通过合理的程序设计、认真审核代码或采用特殊的软件工具也可以解决上述问题。2内部看门狗与外部看门狗许多P都集成了可编程看门狗功能,软件控制可禁止其工作。通常内置看门狗易受代码错误的影响,它无法提供外部独立看门狗电路所具有的保护能力,因此在对安全性能要求较高的应用中(如自动门、医疗设备、机器人等),内置看门狗是无法接受的,从而使管理层采用独立的外部看门狗电路。现利用外部看门狗电路降低高可靠性系统的风险是一个极好的尝试。21简单的看门狗+复位通常看门狗延时将重新复位系统,

12、大多数看门狗电路与P复位集成在一起,它同时可以监视处理器的供电电压。在出现看门狗延时或电源电压跌落的情况下均可产生复位动作,MAX823MAX825系列产品就包含了这两种功能,它们可提供标准的复位电压门限、标准的看门狗延时周期和复位延迟,仅消耗6A电流。而且这些器件具有超小型SC70封装。22工厂预置看门狗系列MAX6316MAX6322系列可提供26种工厂预置的复位电压门限、4种看门狗延时周期、4种复位延迟以及4种输出配置。23用电容调节的看门狗如果应用中需要灵活的看门狗延时周期,设计人员可以选用可调节电路,MAX6746MAX6753系列产品不但提供了工厂预置的复位电压门限,也提供了分压编

13、程的复位电压门限,另外,还可以利用外部电容来调节看门狗的延时周期和复位延迟。图4所示是其典型工作电路,其中:复位电压由分压器R1R2决定;复位延迟时间由电容CSRT设置;看门狗延时周期由电容Csw放置。图5是CSWT在100pF100nF时所对应的看门狗延时周期范围,设计人员利用如此宽范围的看门狗延时周期可以为任何应用提供解决方案。需要说明的是:MAX6301-MAX6304系列基本与MAX6746-MAX6753系列相同,它们均可提供SO或DIP封装。24较长启动延时周期和引脚可选的看门狗对于启动过程较长的应用,可提供两个不同的延时周期设计:即一个较长的初始化延时周期和一个较短的正常工作延时

14、周期。MAX6369-MAX6374系列便具有引脚可编程的启动延迟,其可选范围为200ms60s。一些版本还提供有看门狗的首次边沿激活功能,以满足启动过程更长的应用。在这些芯片中,看门狗电路在启动过程中被禁止,而只允许来自P相关IO引脚的第一个边沿才可以激活看门狗电路。25多电压监控看门狗对于双电源供电系统,MAX6358-MAX6360系列可以监视两路标准电压,并提供长启动周期和标准延时周期的看门狗;对于三组电源供电或需要高有效和低有效复位输出的系统,设计人员可以选用MAX6721-MAX6729系列产品,这些器件能提供长启动周期和标准延时周期的双模式看门狗功能。并可监视两路标准的电源电压(

15、MAX6721-MAX6722)或两路标准电压加上一路可调电压(MAX6723-MAX6724)。同时,这些器件还带有手动复位输入,电源失效比较器、双复位输出和RESET、RESET输出等。26超高可靠窗式看门狗为获得超高的可靠性,设计人员可以利用MAX6323MAX6324窗式看门狗电路,使用这些器件时必须在规定的窗口定时周期内为看门狗提供清零脉冲,有效脉冲可以在上次触发脉冲15ms后送达,也可以在上次触发脉冲之后的10ms时到达,利用MAX6323MAX6324系统可以脱离离散循环,如果清零看门狗指令在循环内执行,它将发出一串高速脉冲,这些脉冲可以将常规的看门狗清零,而且不产生复位。利用窗

16、式看门狗电路可避免上述问题的原因是这种器件在两次看门狗触发脉冲之间要求有一定的时间间隔。这些器件的典型应用包括防抱死(ABS)系统或其它汽车电路、工业控制、医疗产品等要求安全性能较高的应用系统或对系统有效性要求苛刻的应用场合。3结论各种软件程序都会出现代码错误,而且噪声和EMI也会影响系统中的数据,并导致不可预测的系统动作,因此,设计人员要保证系统不出现死锁。看门狗电路是提高系统可靠性的一种简单、廉价方案。利用外部看门狗电路可以防止系统死锁,如果WDI信号在规定的看门狗延时周期内没有被触发,那么电路将对系统进行复位。在目前种类繁多的看门狗器件中,设计人员一定能够找到一款与其需求相吻合的器件。单片机看门狗(Watchdog)的工作原理及其应用XX年05月16日星期日23:00在由单片机构成的微型计算机系统中,由

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号