硬件看门狗实际上就是一个定时器,有一个输入和输出,它的功能是定期检查芯片内部的情况,一旦发生错误就向芯片发出重启信号。实际上,就是监控芯片。
由于单片机系统在工作的时候,容易受到外界电磁场的干扰,造成数据混乱,程序出错,导致死循环,影响单片机的正常工作,从而导致单片机控制系统发生不可预料的后果。
使用硬件看门狗,可以预防程序发生死循环。应用看门狗电路后单片机可以在无人状态下连续工作。硬件看门口电路,利用一个定时器来监控主程序的运行。
扩展资料
注意事项:
大多数51系列单片机都有看门狗,当看门狗没有被定时清零时,将引起复位。这可防止程序跑飞。也可以防止程序在线运行时候出现死循环。
设计者必须清楚看门狗的溢出时间以决定在合适的时候,清看门狗。清看门狗也不能太过频繁否则会造成资源浪费,程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器置数,即可预防溢出中断而引起的误复位。
参考资料来源:百度百科--看门狗(监控芯片)
参考资料来源:百度百科--看门狗(监控软件)
你们知道什么是硬件看门狗吗?跟着我一起学习什么是硬件看门狗吧。 硬件看门狗介绍 看门狗,又叫watchdog timer,主要用来监控、管理CPU的运行状态,并对处于异常状态中的CPU进行复位 *** 作,使其能重新工作。 看门狗可分为硬件看门狗和软件看门狗两种。 硬件看门狗的主体是一个定时电路,并由被监控CPU提供周期性“喂狗”信号,对定时器清零(俗称“清狗”)。CPU正常工作时,由于能定时“清狗”,看门狗内的定时器不会溢出。当CPU出现故障,则不能继续提供“清狗”信号,使得看门狗内定时器不断累加而溢出,从而触发一个复位信号对CPU进行复位,使CPU重新工作。 软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,但在可靠性方面不如硬件定时器,比如系统内部定时器自身发生故障就无法检测到。当然也有通过双定时器相互监视,这不仅加大系统开销,也不能解决全部问题,比如中断系统故障导致定时器中断失效。 看门狗本身不是用来解决系统出现的问题,在调试过程中发现的故障应该要查改设计本身的错误。加入看门狗目的是对一些程序潜在错误和恶劣环境干扰等因素导致系统死机而在无人干预情况下自动恢复系统正常工作状态。看门狗也不能完全避免故障造成的损失,毕竟从发现故障到系统复位恢复正常这段时间内是不能正常工作的。同时一些系统也需要复位前保护现场数据,重启后恢复现场数据,这可能也需要一笔软硬件的开销。 1).MR#:Manual-Reset,手动复位输入信号,低电平有效,当此管脚的输入电平低于0.6V时,会触发Reset#管脚输出一个复位信号,此管脚内部有 70uA 上拉电流。如要不使用此管脚,需要将此管脚接到VCC或者悬空,不可接地 2).VCC:芯片工作电压,接5V或3.3V 3).GND:芯片参考地,直接与单板GND相连 4).PFI:Power-Fail Comparator Input,电压监控输入管脚,当此管脚的输入电压低于1.25V时,FPO#及Reset#会输出低电平信号 5).PFO#:Power-Fail Output,电压监控输出管脚,当PFI的输入电平低于1.25V时,输出低电平,不使用此管脚时可将其悬空 6).WDI:Watchdog Input,清狗信号输入,WDI遇到一个上升沿/下降沿,内部看门狗定时器都将清0。WDI的输入信号超过1.6S不发生跳变时,看门狗内部定时器将会溢出并触发WDO#输出低电平 7).WDO#:Watchdog Output,看门狗输出,WDI超过1.6S不发生跳变时,WDO#将输出低电平,另外,VCC低于1.25V时也会触发WDO#输出低电平 8).RESET#:复位信号输出,低电平有效,低电平宽度为200ms,Reset#信号只会被VCC或MR#触发,WDO#有效时不会触发Reset#,除非将WDO#接到RESET#上。 虽然MAX706与ADM706芯片在封装上相互兼容,但两者还是存在一些差异,具体如下: 1).MAX706R是商业级器件,工作温度范围为:0-70 oC,而ADM706R是工业级器件,工作温度范围为:-40-85 oC,所以大家在选型的时候,一定要产品的工作环境是否对温度有要求 2).MAX706R的最小复位脉冲宽度为140ms,ADM706R的最小脉冲宽度为160ms 3).ADM706R的WDI管脚若悬空处于高阻状态时会禁止芯片工作,所以设计时,需要将WDI管脚通过4.7K电阻上拉到VCC。而MAX706不能被禁止,一上电就开始工作,所以WDI不需要上拉 4).ADM706R的PFO#信号不但会被PFI信号触发,同时也会被MR#信号触发,当MR#出现负电平时,会触发PFO#输出10KHz方波并保持,但MAX706的PFO#仅仅和输入PFI有关,不会受MR#管脚电平的影响 5).当MR#出现低电平时,对于MAX706芯片,WDO#将先于RESET#跳变,而ADM706却相反,WDO#后于RESET#跳变。 为了使硬件看门狗更可靠,使用起来更灵活,当今主流的设计方式都是看门狗芯片配合逻辑器件(CPLD)来使用。 此时,看门狗有三种清狗方式: 1).正常工作时,CPU输出WDI信号清狗 2).CPU关闭看门狗(不输出WDI信号),由CPLD输出WDI清狗信号,此方法不推荐使用,容易出问题,有的设计规范中是严禁CPU关闭看门狗的 3).CPU挂死后,CPLD主动输出WDI清狗信号一段时间,如果CPU仍未恢复正常,则不再继续清狗,等待看门狗芯片内部定时器溢出后输出复位信号对CPU进行复位。 在CPU上电启动期间内,是不能输出WDI信号去清狗的,而外部硬件看门狗是一上电就开始工作的,CPU的启动时间一般在一两分钟,而看门狗的定时器只有1.6s,超过这个时间不清狗就会输出复位信号对CPU进行复位,如果这样的话,CPU就会每隔1.6s重启一次,不能正常工作,如何规避这种问题的? 在实际设计中是这样做的,如下图所示,在CPU上电启动的这段时间内,利用系统时钟信号CLK清狗,等CPU启动完成后,SWITCH自动将清狗信号切换成WDI。定时器和切换开关(SWITCH)是用逻辑模拟的,定时器的溢出时间可设(一般比CPU启动时间稍长一点点),等CPU启动完成后,定时器也随之溢出,并产生溢出信号,SWITCH接收到此溢出信号后,立即采取动作,将清狗信号从系统时钟切换到WDI。本文基于 RockPi 4A 单板 Linux 4.4 内核介绍 RK3399 看门狗( watchdog )的调试方法。
一、驱动文件
RK3399 watchdog 用的是新思( Synopsys )的 IP ,在 watchdog 驱动程序加载时,会注册 misc 设备,节点为 /dev/watchdog 。
驱动文件: drivers/watchdog/dw_wdt.c
二、DTS配置
配置文件: arch/arm64/boot/dts/rockchip/rk3399.dtsi
watchdog 具体配置如下:
三、调试方法
1、关闭看门狗
写入除大写 V 以外的任意字符,不再喂狗,一段时间后系统会重启。
例:
2、打开卡门狗
写入大写 V ,继续喂狗,系统不再重启。
例:
3、CONFIG_WATCHDOG_NOWAYOUT
如果配置了 CONFIG_WATCHDOG_NOWAYOUT ,通过 echo 命令写入任何字符,都不会关闭喂狗。
例:
注:
使用 ./build/mk-kernel.sh rockpi4a 编译内核时,即使修改了 rockchip_linux_defconfig 文件,编译时,相关配置也不会生效。需要在编译前 make distclean 或删除内核根目录下的 .config 文件后,重新编译内核。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)