watchdog即(jí)Linux看门(mén)狗(gǒu),是一个计算机(jī)程序,Linux自带系统,用于监视系统的运行。在由单片机构成的微型计算(suàn)机系统中,由于单片机(jī)的工作常常(cháng)会受(shòu)到来自外界(jiè)电磁场的(de)干扰(rǎo),造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由(yóu)单片机控(kòng)制的系(xì)统无法继续(xù)工作(zuò),会造成整个系统的(de)陷入停(tíng)滞状态,发生不可预料的后果。所以出于对单(dān)片机运行(háng)状(zhuàng)态进行实时监测的考虑,便产生了watchdog,专门用于监测单(dān)片机程序运行状态的芯(xīn)片。
WatchDog 可以记录您(nín)使用计(jì)算机的时间数, 而(ér)且当用户在指(zhǐ)定时(shí)间内没(méi)有继续使用计算机的时(shí)候, WatchDog 可以关机、重启动或显示登录(lù)菜单(dān)。
可(kě)以监视(shì)谁连接或断开国际(jì)互连网(wǎng)连接,玩游(yóu)戏,收发e-mail等(děng)等..提供联机监听局域(yù)网(wǎng)上(shàng)任(rèn)何工作(zuò)站。观察工作(zuò)站桌面(miàn),可以隐藏或全屏显示。
1.看门狗定时器T0的设置。在初始化程序(xù)块中设置T0的工作方式,并开启中断和计数功能。系统Fosc=12 MHz,T0为16位(wèi)计数器,最大计(jì)数值为(2的16次(cì)方)-1=65 535,T0输入计数频率是.Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。
2.计算(suàn)主控程序循环一次的耗时。考虑系(xì)统各功能模块(kuài)及其循环(huán)次数,本系统主控制程(chéng)序的运(yùn)行时间约为16.6 ms。系统设置"看(kàn)门狗"定时器T0定时30 ms(T0的初(chū)值为65 536-30 000=35 536)。主(zhǔ)控程序的每次循环都将(jiāng)刷新T0的初值。如程(chéng)序(xù)进(jìn)入"死循环(huán)"而T0的初(chū)值在30 ms内未(wèi)被刷新,这时(shí)"看门狗"定时器(qì)T0将溢出(chū)并申请中(zhōng)断。
3.设计T0溢出所对应(yīng)的中断服务程(chéng)序。此子(zǐ)程序(xù)只须一条指令(lìng),即在T0对应的中断向量地址(000BH)写入"无(wú)条件转移"命令(lìng),把计算机拖回整个(gè)程(chéng)序(xù)的第一行,对单片机重新进行初始化并(bìng)获得(dé)正(zhèng)确的执行顺(shùn)序。
大(dà)多数51 系(xì)列单片机都有看门狗(gǒu),当(dāng)看门狗(gǒu)没有被定时清零(líng)时(shí),将引起复位。这可(kě)防止程序跑飞。设计者必须清楚看门狗的溢出时间以决(jué)定在合适的时候,清看门(mén)狗。清看(kàn)门狗也(yě)不能太(tài)过频繁否则会造成(chéng)资源(yuán)浪费(fèi)。程序正常运行时,软件每隔一定的时间(小于定时(shí)器(qì)的溢出周期(qī))给定时器置(zhì)数(shù),即可预防溢出中断(duàn)而引(yǐn)起的(de)误(wù)复位。
