2009-11-27 66 views
4

誰能告訴我,我們是否應該啓動/引導代碼的過程中啓用或禁用看門狗執行?我的朋友告訴我,我們平時禁止觀賞犬的引導代碼。任何人都可以告訴我這樣做的優點或缺點嗎?關於看門狗定時器

回答

4

這真的取決於你的項目。看門狗可以幫助您確保程序在執行代碼時不會「卡住」。 - 如果您的程序在啓動過程中可能會掛起,那麼也可能在此處加入監視程序。

話雖這麼說,我一般在我的開機程序結束時啓動看門狗。

0

更少的晶體管開關,我想,這樣可以節省很少的電力。取決於你睡了多少,這可能實際上是一筆很大的儲蓄。你的朋友可能是指當你真正做某事時關閉WDT,然後在睡覺時打開WDT的做法。 Microchip給出了一個很好的說法their PICs

「如果在正常工作期間(FWDTEN = 0),WDT被禁止,那麼SWDTEN位(RCON < 5>)可用於在剛纔之前打開WDT進入休眠模式」

3

一般的WD(看門狗)在開機過程後使能,因爲這是當程序進入其‘環’和週期性踢WD。在啓動過程中,我假設您指的是硬件和外設的線性初始化,代碼中的週期性要少得多,並且很難插入WD踢腳週期。

2

我總是啓用它。禁用它有什麼好處?那麼如果我在啓動代碼期間必須重置它呢?

3

生產代碼應始終啓用看門狗。業餘愛好和/或原型項目顯然是可能不需要監督者的特殊情況。

如果看門狗啓動過程中啓用,也必須考慮特殊情況。擦除和寫入內存需要很長時間(擦除整個設備可能需要幾秒鐘才能完成)。因此,您必須確保您的擦除和寫入例程定期爲看門狗提供服務,以防止重置。

3

如果你正在調試,你想它關閉或設備將重新啓動,您在嘗試步執行代碼。否則,這取決於你。我看到看門狗可以節省項目的屁股,而且我看到看門狗會導致無意中的重啓循環,導致客戶堵塞支撐線,從而使公司花費大量成本。

您撥打電話。

3

最好的做法是讓看門狗在啓動時自動激活。如果您的硬件不是爲了儘快開啓而設計的。通常,我在啓動期間長時間將看門狗設置爲啓動,但一旦我開機啓動後,我會短暫停用,並定期對看門狗進行維護。

你或許不會總是被周圍的重置絞死後工廠關閉,並在遠程位置重新啓動板。或者電路板位於不可訪問的地下室爬行空間,電力下降後不會重新啓動。實驗室簡單實踐不是現實世界的最佳實踐。

嘗試並設計您的硬件,以便您的軟件可以在啓動和報告時檢查復位原因。如果看門狗超時,您需要知道,因爲它是系統中的故障,忽略它會在稍後導致問題。

關閉看門狗的調試比較容易,但在開發過程中定期測試看門狗,以確保一切正常。

2

看門狗恕我直言區服務三個主要目的,但有三個不同的主要目的,以及第三個較不強烈的相關目的:(1)確保在系統被擊倒的所有情況下,最終會恢復; (2)確保當啓用硬件時,如果沒有服務時間不能太長,那麼任何會妨礙此類服務的事情都會合理快速地關閉系統; (3)提供一種方法,系統可以讓睡眠一段時間,而不會永遠睡眠。

在引導加載程序期間禁用看門狗可能不會干擾目的#2,它可能會干擾目的#1。我的首選是在引導加載程序期間啓用看門狗,並且在任何時候引導加載程序都會觸發看門狗,以表明系統確實應該在引導加載程序中(例如,每次接收到有效的引導加載程序時,命令包)。在一個我沒有這樣做的項目中,只是引導裝載程序盲目地提供了看門狗,靜態zaps有時可能會將單元敲入引導加載程序模式,在那裏它們將永遠坐着。當沒有實際的引導加載進行時,讓看門狗將系統從引導加載程序中踢出來緩解該問題。順便說一句,如果我設計我的'理想'嵌入式看門狗電路,那麼我將擁有硬件可配置參數以實現最大看門狗時間,並且將具有'請求看門狗時間'和'最大看門狗時間'的軟件設置。最初,這兩個軟件設置將被設置爲最大;任何時候看門狗被饋送,時間將被設置爲三個設置中的最小值。軟件可以隨時將「請求的看門狗時間」更改爲任何值; 「最大看門狗時間」設置可隨時減少,但只能通過系統重置來增加。順便說一下,我可能還會包含一個「定期重置」定時器,它會強制系統在某個時間間隔無條件重置。軟件將無法覆蓋此計時器的行爲,但能夠查詢並早日申請重置。即使系統試圖與監督者一切正確,仍然可能陷入「破裂」的狀態,但看門狗得到餵食的確很好。如果定期計劃的停機時間可以接受,定期重置可以避免這些問題。人們可以通過儘早執行這些重置來最小化這種重置對系統有用性的影響,只要它不會中斷正在進行中的將被中斷的一些行動。例如,如果重置時間間隔設置爲七小時,則可以在時鐘下降到一小時的任何時候,請求不要求進一步的動作,等待幾秒鐘,以查看是否有人試圖發送動作,就像它們一樣要求停止,如果沒有要求的行動,重置,然後邀請進一步的請求。與系統即將重置一樣發送的請求將被延遲到重置發生之後,但如果沒有請求需要超過一個小時才能完成,則不會有任何請求丟失或中斷。