摘要:本文對內部(集成在處理器內部)看門狗定時器(WTD)與外部(基于硬件) WDT的優勢和劣勢進行了對比。內部看門狗便于設計,但容易失效。MAXQ2000微控制器的WDT可以作為內部看門狗的一個例子。基于硬件的看門狗定時器需要占用額外的電路板空間,但在對于可靠性要求較高的設計中確實不可或缺的。本文給出了一個對照表,總結了每種WDT方案的優缺點。
本文介紹了一些針對具體應用選擇最佳定時器的考慮。
具有WDT功能的系統非常適合檢測誤碼,中斷(包括存儲器故障,EMI對存儲器或接口放電)可能導致臨時性的誤碼。這些誤碼會導致處理器輸入、輸出數據的極性翻轉,當誤碼沒引入到程序信息中時,微處理器將會執行錯誤的代碼。很有可能造成處理器開始執行操作數,而非操作代碼。程序開始執行這種錯誤代碼時,將造成程序運行不正常,無法提供看門狗清零信號,從而導致處理器復位。合理的系統設計能夠在復位后恢復系統的正常運行。
需要注意的是,WDT不能檢測瞬態故障,按照定義,只有在WDT計數器達到預定的時間間隔時才會復位處理器。正是這一原因,需要選擇一個最短超時周期,以便在系統失控之前由WDT產生復位,使系統恢復正常工作。
正確的軟件操作能夠在要求的期限內提供數字信號跳變,確保計數寄存器不會發生溢出。但當程序進入一個無限循環或出現“死機”時,將無法清零計數寄存器。發生這種情況時,看門狗將觸發一次復位。WDT周期是計數器溢出的時間,為避免復位,必須在短于超時周期的時間內清零看門狗定時器。
有些WDT在基本計數寄存器架構的基礎上增添了更多功能,例如:“窗檢測”WDT或“最小/最大"超時WDT,這一功能會在發生過慢或過快的看門狗定清零時產生復位。如果在計數寄存器的數值低于某個門限時出現寄存器清零信號,器件將觸發復位。簡單地說,是在發生看門狗清零過快時觸發復位,可以避免處理器工作在晶體標稱頻率的諧波狀態下。另外一個功能是利用邏輯輸入(外部看門狗)或寄存器位(內部看門狗)禁止WDT功能。
沒有看門狗清零操作時,MAXQ2000'的WDT溢出,由此觸發中斷,經過512個系統時鐘周期后自行復位。中斷為保存調試信息提供了“最后一次機會”,大多數設計人員認為這一機會對于電路開發及故障排查至關重要。除了存儲調試信息外,中斷還用于從故障狀態下恢復工作,清除看門狗計數器。后者會對系統的可靠性產生一定的影響。
與其它內部WDT類似,MAXQ2000的看門狗可以通過軟件禁止。值得注意的是,這一功能可能是一把雙刃劍:在程序運行失效時會禁止看門狗,導致系統的進一步混亂。
有些處理器將它們的WDT連接到一個獨立于系統時鐘的內部振蕩器。雖然MAXQ2000的WDT時鐘由系統時鐘驅動,MAXQ2000的時鐘電路可以在主時鐘失效時切換到備份RC振蕩器。
MAX6369 WDT的邏輯輸入引腳可以禁止定時器工作,防止復位。它通常連接到微處理器的一個邏輯引腳,這種方式對可靠性構成一定的威脅,因為在程序運行失效時可能會意外禁止看門狗功能。大多數情況下,需要在上電過程中(處理器導入程序時)禁止看門狗功能。MAX6369在復位后提供了一個額外的長周期看門狗超時。看門狗第一次清零后恢復到常規超時周期。這種方式比從外部禁止看門狗功能或重新使能看門狗功能更加可靠。
外部看門狗定時器還可以監測VCC電源,在電壓跌落到指定的門限以下時觸發系統復位。有些定時器還提供了具有去抖動電路和ESD保護的手動復位輸入。這種IC內部的電壓檢測器能夠在整個工作溫度范圍內保持較高精度,優于集成在處于電源失效狀態的微處理器內部的方案。
表1. 看門狗定時器比較
引言
看門狗定時器(WDT)在出現無效的軟件運行狀態時用來強行復位(硬件復位)嵌入式微處理器或微控制器,失效狀態可以是簡單地觸發寄存器的某一位,或者是射線干擾或EMI (電磁輻射)。本文介紹了一些針對具體應用選擇最佳定時器的考慮。
WDT的典型應用
防止微處理器閉鎖是WDT的一個典型應用,通常,嵌入式軟件有一個“主循環”程序,用其調用子程序以實現不同的任務。每次程序循環對WDT進行一次復位,如果任何原因造成程序循環操作失敗,看門狗定時器則發生超時,對器件進行復位。具有WDT功能的系統非常適合檢測誤碼,中斷(包括存儲器故障,EMI對存儲器或接口放電)可能導致臨時性的誤碼。這些誤碼會導致處理器輸入、輸出數據的極性翻轉,當誤碼沒引入到程序信息中時,微處理器將會執行錯誤的代碼。很有可能造成處理器開始執行操作數,而非操作代碼。程序開始執行這種錯誤代碼時,將造成程序運行不正常,無法提供看門狗清零信號,從而導致處理器復位。合理的系統設計能夠在復位后恢復系統的正常運行。
需要注意的是,WDT不能檢測瞬態故障,按照定義,只有在WDT計數器達到預定的時間間隔時才會復位處理器。正是這一原因,需要選擇一個最短超時周期,以便在系統失控之前由WDT產生復位,使系統恢復正常工作。
內部和外部WDT
WDT可以內置于微處理器,例如:MAXQ2000微控制器;也可以是一個獨立的IC (外部WDT),或作為支持ASIC的一部分。無論是內部WDT,還是外部WDT,各有其優缺點。內部定時器有助于節省成本,但容易受程序運行失效的影響。相對成本較高的外部WDT具有一個獨立的時鐘源,能夠提供更高的可靠性;經過適當配置,外部WDT不會受程序失效的影響。WDT的基本原理
WDT的核心電路是計數寄存器,時鐘源連續遞增計數寄存器的值,計數器發生溢出時,看門狗邏輯電路強制系統復位。為防止復位,必須周期性地將計數寄存器清零,稱其為“喂狗”。外部WDT IC具有一個數字輸入引腳,該引腳從低到高或從高到低的跳變將計數寄存器清零。內部WDT的“喂狗”操作則不同,例如,MAXQ2000的WDT,可以通過設置寄存器位(MOVE WDCN.0, #1)的方式復位看門狗。PIC微控制器及其它微處理器則通過專用指令(CLRWDT)復位計數寄存器。正確的軟件操作能夠在要求的期限內提供數字信號跳變,確保計數寄存器不會發生溢出。但當程序進入一個無限循環或出現“死機”時,將無法清零計數寄存器。發生這種情況時,看門狗將觸發一次復位。WDT周期是計數器溢出的時間,為避免復位,必須在短于超時周期的時間內清零看門狗定時器。
有些WDT在基本計數寄存器架構的基礎上增添了更多功能,例如:“窗檢測”WDT或“最小/最大"超時WDT,這一功能會在發生過慢或過快的看門狗定清零時產生復位。如果在計數寄存器的數值低于某個門限時出現寄存器清零信號,器件將觸發復位。簡單地說,是在發生看門狗清零過快時觸發復位,可以避免處理器工作在晶體標稱頻率的諧波狀態下。另外一個功能是利用邏輯輸入(外部看門狗)或寄存器位(內部看門狗)禁止WDT功能。
集成在微處理器內部的看門狗定時器
本文無法在有限的篇幅內列舉各種微處理器(μP) WDT的案例,而是以MAXQ2000微控制器的內部WDT為例進行說明。該定時器比上述基本的計數寄存器復雜一些,類似于多數商用化微控制器芯片的WDT功能。沒有看門狗清零操作時,MAXQ2000'的WDT溢出,由此觸發中斷,經過512個系統時鐘周期后自行復位。中斷為保存調試信息提供了“最后一次機會”,大多數設計人員認為這一機會對于電路開發及故障排查至關重要。除了存儲調試信息外,中斷還用于從故障狀態下恢復工作,清除看門狗計數器。后者會對系統的可靠性產生一定的影響。
與其它內部WDT類似,MAXQ2000的看門狗可以通過軟件禁止。值得注意的是,這一功能可能是一把雙刃劍:在程序運行失效時會禁止看門狗,導致系統的進一步混亂。
有些處理器將它們的WDT連接到一個獨立于系統時鐘的內部振蕩器。雖然MAXQ2000的WDT時鐘由系統時鐘驅動,MAXQ2000的時鐘電路可以在主時鐘失效時切換到備份RC振蕩器。
看門狗定時器IC
專用的、外部WDT IC能夠提供多項功能選擇,許多廠商都可提供這種器件。有些器件,例如; MAX6752,具有“窗檢測看門狗”功能。MAX6752還可通過外部電容調節看門狗的超時周期和復位脈沖寬度,以滿足微處理器和具體應用的要求。MAX6369 WDT的邏輯輸入引腳可以禁止定時器工作,防止復位。它通常連接到微處理器的一個邏輯引腳,這種方式對可靠性構成一定的威脅,因為在程序運行失效時可能會意外禁止看門狗功能。大多數情況下,需要在上電過程中(處理器導入程序時)禁止看門狗功能。MAX6369在復位后提供了一個額外的長周期看門狗超時。看門狗第一次清零后恢復到常規超時周期。這種方式比從外部禁止看門狗功能或重新使能看門狗功能更加可靠。
外部看門狗定時器還可以監測VCC電源,在電壓跌落到指定的門限以下時觸發系統復位。有些定時器還提供了具有去抖動電路和ESD保護的手動復位輸入。這種IC內部的電壓檢測器能夠在整個工作溫度范圍內保持較高精度,優于集成在處于電源失效狀態的微處理器內部的方案。
結論
表1列舉了外部和內部WDT的優勢和劣勢,采用外部看門狗定時器IC相對成本較高,但可滿足高可靠性系統的要求。將WDT的禁止輸入連接到微處理器(可以通過軟件禁止看門狗復位),會影響內部看門狗定時器的可靠性。集成在微處理器內部的看門狗定時器比較適合對可靠性要求不高的應用,好處是能夠降低成本。表1. 看門狗定時器比較
? | External WDTs | Internal WDTs |
Pros |
|
|
Cons |
|
|
評論
查看更多