|
先來介紹下看門狗的大概概念
看門狗有點(diǎn)類似于定時(shí)器中斷,有寄存器設(shè)置對(duì)系統(tǒng)時(shí)鐘分頻,比方說系統(tǒng)時(shí)鐘256分頻就是系統(tǒng)每256個(gè)時(shí)鐘,看門狗計(jì)數(shù)器自加1,然后兩個(gè)寄存器用來放看門狗計(jì)數(shù)器的值(一般51是16位),當(dāng)看門狗計(jì)數(shù)器溢出,就會(huì)產(chǎn)生如同按下RESET鍵的效果,即重啟,程序從頭開始.
所以通過看門狗計(jì)數(shù)器分頻設(shè)置,可以知道看門狗溢出時(shí)間,比如1秒,那么只要寫一個(gè)小函數(shù),用來清0看門狗計(jì)數(shù)器
然后保證程序運(yùn)行中任意1秒內(nèi)這個(gè)函數(shù)至少被執(zhí)行一次,就能保證程序的正常運(yùn)行.這個(gè)動(dòng)作也就是俗稱的喂狗.
當(dāng)你程序跑飛,如果跑進(jìn)死循環(huán)里,看門狗只要溢出,能幫你重啟.但是之前沒保存的數(shù)據(jù)消失,但是如果跑飛但是沒有跑進(jìn)死循環(huán),只要后面碰到喂狗語句前看門狗計(jì)數(shù)器不溢出,那么看門狗是不會(huì)發(fā)現(xiàn)程序跑飛的.所以說發(fā)現(xiàn)程序跑飛完全靠看門狗不現(xiàn)實(shí).不過可以通過一些技巧來盡量發(fā)現(xiàn)程序跑飛,這個(gè)就不是三言兩語能說清楚的了,網(wǎng)上有這方面的文章感興趣的可以搜索下.
因?yàn)榭床坏侥愕挠布途唧w的工作環(huán)境,所以只能給你提供一個(gè)思路.
如果同型號(hào)的設(shè)備,一個(gè)OK另外一個(gè)不行,感覺上應(yīng)該是硬件問題.最好檢查下有故障那臺(tái)的板子上有沒有什么異常情況.比如電解電容失效之類的.
如果故障能重現(xiàn),那么就順藤摸瓜,但是感覺故障出現(xiàn)隨機(jī)性,試著站在更高點(diǎn)的角度觀察故障,比如當(dāng)故障發(fā)生時(shí)周邊環(huán)境有沒有變化(是否附近的設(shè)備的電機(jī)啟動(dòng)或者停止,是否附近有日光燈開啟等等),如果有試著順著這個(gè)思路去證明或者否定. |
評(píng)分
-
查看全部評(píng)分
|