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