關(guān)于s3c2410的Watchdog
1. 看門狗原理
Watchdog原理上就是一個(gè)定時(shí)器。定時(shí)器timer對(duì)時(shí)鐘進(jìn)行計(jì)數(shù),當(dāng)定時(shí)器溢出時(shí),產(chǎn)生復(fù)位信號(hào),使得整個(gè)系統(tǒng)復(fù)位。在程序或嵌入式系統(tǒng)中,需要定期的對(duì)看門狗timer進(jìn)行復(fù)位重新計(jì)數(shù),定時(shí)器不會(huì)溢出復(fù)位系統(tǒng),從而保證系統(tǒng)的正常運(yùn)行。當(dāng)某種原因(例如干擾)引起程序跑飛或者進(jìn)入死循環(huán)時(shí),程序不能定期的復(fù)位看門狗timer, 計(jì)數(shù)溢出產(chǎn)生復(fù)位信號(hào),導(dǎo)致系統(tǒng)復(fù)位。
設(shè)本系統(tǒng)程序完整運(yùn)行一周期的時(shí)間是T1,看門狗的定時(shí)周期為T2,T2>T1,在程序運(yùn)行一周期后就修改定時(shí)器的計(jì)數(shù)值,只要程序正常運(yùn)行,定時(shí)器就不會(huì)溢出,若因?yàn)槌绦颉芭茱w”或者進(jìn)入死循環(huán),那么系統(tǒng)不能在T1時(shí)刻修改時(shí)間的計(jì)數(shù)值,一直計(jì)數(shù)直到T2時(shí)刻溢出,引發(fā)系統(tǒng)復(fù)位,使系統(tǒng)重新運(yùn)行,從而起到監(jiān)控作用。
從上面的解釋中可以看出,Watchdog的作用就是為了防止系統(tǒng)因意外“跑飛”,導(dǎo)致整個(gè)系統(tǒng)癱瘓時(shí),恢復(fù)(reset)系統(tǒng)運(yùn)行。
2. S3C2410看門狗控制
1)作為常規(guī)定時(shí)器使用,并且可以產(chǎn)生中斷
2)作為看門狗定時(shí)器使用,期滿時(shí),它可以產(chǎn)生128個(gè)時(shí)鐘周期的復(fù)位信號(hào)
具體看下圖所示:輸入時(shí)鐘為PCLK(該時(shí)鐘頻率等于系統(tǒng)的主頻),它經(jīng)過(guò)兩級(jí)分頻(Prescaler和frequency division factor),最后將分頻后的時(shí)鐘作為該定時(shí)器的輸入時(shí)鐘,當(dāng)計(jì)數(shù)器期滿后可以產(chǎn)生中斷或者復(fù)位信號(hào)。
看門狗定時(shí)器計(jì)數(shù)值的計(jì)算公式如下:
1)輸入到計(jì)數(shù)器的時(shí)鐘周期
t_watchdog = 1/( PCLK / (Prescaler value + 1) / Division_factor )
預(yù)分頻器Prescaler及分頻因子Division factor的值由用戶在WTCON(看門狗時(shí)鐘控制寄存器)中設(shè)置。
2)看門狗的定時(shí)周期
T = 計(jì)數(shù)值(WTCNT初值-WTCNT當(dāng)前值) * t_watchdog
WTCNT為看門狗數(shù)據(jù)寄存器,用來(lái)設(shè)置計(jì)數(shù)多少個(gè)時(shí)鐘周期。乘以時(shí)鐘周期就是定時(shí)的總時(shí)間了。