
142
|
第五章
watchdog 的目的是提供判斷系統是否有任何部分卡住的,理想上 watchdog 的服務只出
現在一個地方,某個程式會持續執行,顯示所有子系統都如預期般運作的地方。一般是
主迴圈,這表示 watchdog 必須有較長的逾時時間,在主迴圈監控整個系統比起使用較
短的逾時監控系統的一部分還來得好。
可惜的是,在某些系統 watchdog 沒辦法分離得這麼乾淨,某些低階程式碼必須傳送訊
號給 watchdog 時(這些程式碼很危險),某些地方發生了無法回復的錯誤,造成系統當
機,這些程式需要額外的處理以確定是否發生任何意外(並嚐試防止這些狀況發生)。
一般不希望 watchdog 在機板 bring-up 或除錯時發生作用,否則,系統會在中斷之後重
置。關閉中斷最直接的方式是透過除錯,如果系統有日誌方法(log method),確認在開
機時印出 watchdog 開啟狀態的訊息,這是開發人員在進行產品測試時希望能記得開啟
的功能,此外,能夠在 watchdog 作用時閃爍 LED 燈,如同系統的心跳,能夠輕易的從
系統外部判斷目前 watchdog 的狀態,讓使用者知道系統運作正常。
Watchdog 術語
提供 watchdog 服務讓它不會卡住以往稱為「踹狗一下」(kicking the dog)。
當作者任職於一家小型對寵物十分友善的公司時,對這件事感到十分驚訝。在午餐
時看著狗在旁邊玩耍,安靜休息讓人十分愉快。某天在為大客戶準備程式碼審查
的過程時,CEO 看到主迴圈裡的
KickTheDog() ...