單片機中的看門(mén)狗研究
1 看門(mén)狗的作用
看門(mén)狗定時(shí)器是一個(gè)計數器,基本功能是在發(fā)生軟件問(wèn)題和程序跑飛后使系統重新啟動(dòng)??撮T(mén)狗計數器正常工作時(shí)自動(dòng)計數,程序流程定期將其復位清零,如果系統在某處卡死或跑飛,該定時(shí)器將溢出,并將進(jìn)入中斷。在定時(shí)器中斷中執行一些復位操作,使系統恢復正常的工作狀態(tài),即在程序沒(méi)有正常運行期間,如期復位看門(mén)狗以保證所選擇的定時(shí)溢出歸零,使處理器重新啟動(dòng)。
2 看門(mén)狗問(wèn)題及相關(guān)實(shí)驗
現今市面上流行的一些單片機,多嵌有內部WDT,如TI的MSP430系列,Philips的P87XXX和P89XXX系列,Microchip的PIC列,Atmel的AT89SXX系列和Holtek公司的Htxxx系列。但是這些內部看門(mén)狗在工作時(shí),多存在一定的誤差。一些工程師在設計的過(guò)程中,由于忽略了這一點(diǎn),導致系統出現異常。MSP430系列單片機是美國德州儀器公司(TI)近幾年開(kāi)發(fā)的新一代單片機,該系列是一款16位、具有精簡(jiǎn)指令集、超低功耗的全新概念混合型單片機。在眾多單片機系列中,由于它具有極低的功耗、豐富的片內外設和方便靈活的開(kāi)發(fā)手段,已成為一顆耀眼的新星。其內部自帶看門(mén)狗及復位電路,理論上如果程序跑飛,可用看門(mén)狗將其復位。但在實(shí)際使用過(guò)程中,發(fā)現看門(mén)狗的作用并非萬(wàn)無(wú)一失,以下實(shí)驗證明了這一點(diǎn)。實(shí)驗電路如圖1所示。


上述實(shí)驗啟動(dòng)后,如果程序正常運行,LED會(huì )閃爍。缺省時(shí),MSP430的看門(mén)狗是允許狀態(tài),所運行的程序會(huì )不斷地訪(fǎng)問(wèn)看門(mén)狗。理論上,這個(gè)系統是不會(huì )發(fā)生啟動(dòng)失敗的,因為即使啟動(dòng)失敗,看門(mén)狗也應該在數百毫秒內啟動(dòng),復位整個(gè)系統?;谶@種思想,對單片機的復位進(jìn)行測試。K2斷開(kāi),用K1連續產(chǎn)生。Reset信號,測試看門(mén)狗使系統重啟的成功率。K2閉合,則reset端高電平,理論上K1不能有效產(chǎn)生復位脈沖,觀(guān)察看門(mén)狗是否起作用。
3 實(shí)驗結果與分析
實(shí)驗結果如下:K2斷開(kāi),連續開(kāi)關(guān)K1,上電重啟系統,平均155次失敗1次(LED不閃),即看門(mén)狗失效概率0.6%;K2閉合,連續開(kāi)關(guān)K1,平均18次失敗1次(LED不閃),且一旦失敗,將連續失敗下去,看門(mén)狗無(wú)效率占到了約5.5%。另外,當采用同樣具有內置看門(mén)狗的其他系列單片機替代實(shí)驗中的MSP430,啟動(dòng)程序段作相應修改時(shí),實(shí)驗結果仍大致相同,這說(shuō)明具有內置看門(mén)狗的單片機面臨的問(wèn)題是相同的。經(jīng)分析可能有如下原因:
①由于看門(mén)狗的時(shí)鐘不獨立,計數時(shí)鐘與系統為同一分頻鏈路,因此看門(mén)狗不能在系統出現問(wèn)題時(shí)有效運作。
②由于時(shí)鐘可用軟件設置,啟動(dòng)失敗時(shí),開(kāi)機時(shí)鐘可能處于空檔,沒(méi)有時(shí)鐘看門(mén)狗不能生效。
③有些看門(mén)狗需要用軟件設置或啟動(dòng),因此啟動(dòng)失敗后,初始化程序沒(méi)有激活,CPU可能跳轉到隨機代碼,使看門(mén)狗被禁止。這樣的看門(mén)狗是需要有可靠的上電復位作保證的,因此,從理論上講,原設計存在著(zhù)不合理性?;谏鲜龇治?,采用片外看門(mén)狗專(zhuān)用芯片TPS3823由獨立的分頻振蕩電路提供計數脈沖。實(shí)驗電路如圖2所示。

上述電路中,TPS3823輸出定時(shí)溢出信號給Reset端。程序段中,CPU要不斷地通過(guò)I/O口輸出喂狗信號,使看門(mén)狗計數器清零。在此電路中重復上述試驗中K1、K2的相同動(dòng)作,系統重啟成功率達到100%。
結 語(yǔ)
未來(lái)的內置看門(mén)狗必須有獨立可靠的時(shí)鐘。系統上電后,看門(mén)狗即為允許狀態(tài),無(wú)需軟件設置,它只能被外部硬件跳線(xiàn)或內部熔絲(fuse)所禁止。目前,如果要求設計可靠性較高的嵌入式系統,外置看門(mén)狗是必須考慮的。內置看門(mén)狗的另一問(wèn)題是系統復位后,程序應判斷是由Reset端正常上電復位,還是程序跑飛看門(mén)狗所致,由此確定現場(chǎng)數據是否應該保留。這也是在看門(mén)狗應用中所應考慮的。
評論