為網(wǎng)絡(luò)應(yīng)用選定看門狗
一個看門狗的工作是使嵌入式處理器或微控制器能在對無效的軟件狀態(tài)進行響應(yīng)后可以復(fù)位。在網(wǎng)絡(luò)應(yīng)用中,系統(tǒng)工作是不能中斷的,看門狗就在確保系統(tǒng)不凍結(jié)或跳出死循環(huán)的工作中扮演了一個重要角色。
圖1 Maxim的MAX6746等看門狗扮演了重要角色
高級別網(wǎng)絡(luò)功能帶來的問題就是系統(tǒng)需要很多時鐘。一個簡單的看門狗也許是不夠的。當(dāng)不切實際地使用大量基于硬件的定時器時,一批網(wǎng)絡(luò)定時器就等同于使用了時鐘中斷信號,而所有的時鐘都保持在軟件中。不過,在很多應(yīng)用中,硬件時鐘仍然能提供可信任的解決方案。
通常,嵌入式軟件有一個能調(diào)用不同子程序的主循環(huán),看門狗一旦處在主循環(huán)的頂端就會被復(fù)位。如果主循環(huán)不能正確執(zhí)行,看門狗就會啟動,進而使器件復(fù)位。許多網(wǎng)絡(luò)應(yīng)用因為看門狗的加入而變得可靠。但是一個看門狗不能直接探測到錯誤,準確地說,看門狗必須在它復(fù)位處理器之前達到預(yù)置時間間隔的頂點。
看門狗可以放置在微控制器中間,比如像MAXQ2000,外置在標準的單個IC中或嵌入系統(tǒng)作為支持ASIC的一部分。內(nèi)置看門狗能省錢,但易被失控的代碼所影響。外部的看門狗有一個單獨的時鐘脈沖源,這使其可靠性大為增加。如果配置正確,它們就不會被失控代碼繞過或無效化。
一個通常有效的看門狗功能是“窗戶”或“最小/最大值”,當(dāng)看門狗被操控得太慢或太快,這個功能就能通過發(fā)復(fù)位信號而增強對正確操作的認證。如果當(dāng)清空計數(shù)寄存器的指令到達而計數(shù)寄存器的數(shù)量未達閾值時,器件就會觸發(fā)系統(tǒng)復(fù)位。這樣不僅防止了軟件錯誤,還能在晶振以錯誤頻率工作的時候復(fù)位MPU。另一個功能就是通過外部的邏輯輸入或內(nèi)部的寄存器位來禁止看門狗。
內(nèi)置于MCU的看門狗
舉例來說,我們來看MAXQ2000內(nèi)部的看門狗。如果不被操控,這個看門狗會觸發(fā)一個中斷,在計數(shù)完512個額外的系統(tǒng)時鐘周期后重新復(fù)位。
這個中斷為存儲調(diào)試信息提供了最后的機會,它是電路開發(fā)和故障診斷中一個非常有用的功能。取代了存儲調(diào)試信息,這個中斷能被用來從故障中回復(fù)錯誤和清空看門狗。
像其他內(nèi)置的看門狗一樣,MAXQ2000也能通過軟件來終止。不過此功能是把雙刃劍,因為失控代碼會禁止看門狗,并繼續(xù)亂鬧。
一些微控制器將它們的看門狗連接到獨立于系統(tǒng)時鐘的晶振上。盡管MAXQ2000的看門狗來自于系統(tǒng)時鐘,但電路仍會切換到備用的RF振蕩器上以防止主晶振的失控。
外置于MCU的看門狗
很多廠商能提供具備多種功能的專門看門狗IC。比如MAX6752,具有窗口功能,可讓用戶調(diào)整看門狗的超時區(qū)域,并用外置電容來調(diào)整復(fù)位脈沖。
看門狗MAX6369上的邏輯輸入管腳能禁止時鐘,阻止復(fù)位。盡管用邏輯管腳來連接微控制器是很吸引人的,但會給系統(tǒng)帶來風(fēng)險,因為失控代碼能隨機地禁止看門狗。通常,當(dāng)微控制器啟動的時候,看門狗要在啟動階段被禁止。MAX6369能在復(fù)位完畢的時候提供一個額外的長看門狗周期。當(dāng)看門狗被第一次啟動的時候,正常的持續(xù)超時就會回歸。一些定時器還能提供一個去抖動和ESD保護復(fù)位開關(guān)輸入。
評論