劉宵辰,趙 剛,劉衛(wèi)華
(航空工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)
看門狗機(jī)制在嵌入式計(jì)算機(jī)系統(tǒng)中應(yīng)用十分普遍,在嵌入式計(jì)算機(jī)系統(tǒng)中,看門狗通常用來監(jiān)控處理器芯片的工作狀態(tài),防止處理器芯片工作異常從而導(dǎo)致系統(tǒng)出現(xiàn)故障,提高了嵌入式計(jì)算機(jī)產(chǎn)品的可靠性和安全性[1]。
看門狗機(jī)制可以通過軟件或硬件的方式實(shí)現(xiàn),在一定的時(shí)間周期內(nèi)監(jiān)控系統(tǒng)運(yùn)行的情況,若系統(tǒng)在規(guī)定的時(shí)間周期內(nèi)沒有發(fā)出觸發(fā)信號,則看門狗會強(qiáng)制系統(tǒng)復(fù)位,以保證系統(tǒng)即使受到干擾仍能夠恢復(fù)正常工作[2]??撮T狗的工作流程如圖1所示。
圖1 看門狗工作流程
看門狗電路通常應(yīng)具備的功能有:使能、禁止、喂狗、狗叫中斷、復(fù)位。當(dāng)處理器芯片程序正常運(yùn)行時(shí),在小于狗叫時(shí)間間隔內(nèi),處理器輸出一個(gè)喂狗信號,看門狗就不會產(chǎn)生狗叫復(fù)位信號或者中斷信號。當(dāng)程序執(zhí)行異常時(shí),處理器無法在小于狗叫時(shí)間間隔內(nèi)輸出喂狗信號,則看門狗產(chǎn)生狗叫復(fù)位信號或中斷信號,進(jìn)而使處理器發(fā)生復(fù)位或中斷,最終可使處理器軟件從起始位置開始執(zhí)行,使軟件恢復(fù)正常。軟件看門狗電路集成在處理器的內(nèi)部,此類看門狗雖然方便設(shè)計(jì),但很容易失效,會發(fā)生看門狗無法啟動(dòng)的情況。軟件看門狗失效的主要原因有:1) 很多處理器自帶的看門狗需要將相應(yīng)的寄存器進(jìn)行配置后才能啟動(dòng),若因?yàn)槌绦蚺茱w無法對寄存器進(jìn)行配置,看門狗就無法啟動(dòng),從而發(fā)生看門狗失效;2) 若程序執(zhí)行異常,進(jìn)入了死循環(huán),但是這個(gè)死循環(huán)中卻包含了喂狗操作,則看門狗不會狗叫、系統(tǒng)無法復(fù)位,看門狗發(fā)生失效[3];3) 硬件損壞,在運(yùn)行過程中處理器硬件發(fā)生損壞也會造成看門狗失效。一些硬件看門狗電路將RESET引腳連接到處理器的復(fù)位引腳上,當(dāng)狗叫發(fā)生后,系統(tǒng)無法記錄狗叫發(fā)生的時(shí)機(jī),不利于故障分析。
本文設(shè)計(jì)了一種看門狗機(jī)制,采用看門狗芯片結(jié)合處理器實(shí)現(xiàn),既能實(shí)現(xiàn)系統(tǒng)監(jiān)控,還能對狗叫的時(shí)刻進(jìn)行信息記錄,通過分析記錄的信息有助于故障定位[4]。
基本電路如圖2所示。復(fù)位芯片的RESET引腳連接至處理器的復(fù)位引腳,WDI引腳與處理器任意一個(gè)I/O引腳(如GPIO5)相連,MR引腳與處理器另一I/O引腳(如GPIO6)連接,WDO引腳接入處理器的非屏蔽中斷(NMI)輸入引腳。當(dāng)處理器定時(shí)翻轉(zhuǎn)GPIO5引腳的高低電平,可實(shí)現(xiàn)看門狗芯片的喂狗操作,看門狗芯片不會發(fā)出復(fù)位信號。當(dāng)處理器的程序跑飛,出現(xiàn)“死機(jī)”等異常情況的時(shí)候,處理器無法完成定時(shí)喂狗操作,看門狗芯片的WDO引腳將輸出一個(gè)低電平信號,該低電平將觸發(fā)處理器的非屏蔽中斷。處理器在中斷服務(wù)程序中可對此次中斷進(jìn)行信息記錄,比如將中斷發(fā)生的時(shí)間記錄至NVRAM或FLASH中,還可以記錄中斷發(fā)生的總次數(shù)。處理器記錄完信息后,將GPIO6輸出一個(gè)低電平,觸發(fā)看門狗芯片的手動(dòng)復(fù)位功能,看門狗芯片RESET引腳產(chǎn)生復(fù)位信號,完成處理器的復(fù)位。
圖2 看門狗電路
處理器中斷服務(wù)程序所做的工作有如下三點(diǎn):
1) 從NVRAM或FLASH中讀取處理器進(jìn)入非屏蔽中斷的次數(shù),將該次數(shù)加1后,將新的次數(shù)重新寫入NVRAM或FLASH中,此外將中斷發(fā)生的時(shí)間記錄到NVRAM或FLASH中;
2) 實(shí)現(xiàn)一次看門狗喂狗操作;
3) 將指定的GPIO引腳輸出一個(gè)低電平。
具體流程見圖3。
圖3 處理器中斷服務(wù)程序流程框圖
本文設(shè)計(jì)的看門狗機(jī)制,將看門狗芯片與處理器進(jìn)行了結(jié)合,不但能實(shí)現(xiàn)看門狗功能,避免了單一采用軟件看門狗易出現(xiàn)看門狗失效的問題,還能對狗叫的時(shí)刻進(jìn)行信息記錄,通過分析記錄的信息將有助于故障定位。此看門狗電路實(shí)際測試功能符合設(shè)計(jì)要求,可提高系統(tǒng)的安全性和可靠性,已經(jīng)在實(shí)際項(xiàng)目中廣泛使用,對其他類似的看門狗機(jī)制設(shè)計(jì)具有借鑒意義。
[1] 施偉,劉建輝.看門狗在實(shí)際應(yīng)用中的問題分析及對策研究[J].世界科技研究與發(fā)展,2009,31(5):842-843.
[2] 賈鵬,曾少航,賈秀玲.M054硬件看門狗重啟記錄設(shè)計(jì)與應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2019,32(6):63-64.
[3] 谷智明.新型純硬件看門狗電路設(shè)計(jì)分析研究[J].無線互聯(lián)科技,2019,16(7):121-122.
[4] 劉博,強(qiáng)凱,詹思維.PowerPC數(shù)據(jù)處理模塊的看門狗設(shè)計(jì)[J].航空計(jì)算技術(shù),2019,49(2):105-107.
[5] 胡瑞忠.英飛凌XC2336B單片機(jī)看門狗編程——基于DAVE2.0平臺[J].山西電子技術(shù),2014(6):59-60.
[6] 杜璧秀.基于DSP2812的“看門狗”設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2015(1):153-153.