從系統(tǒng)故障或軟件故障中恢復并非易事。故障發(fā)生的時間越長,就越難識別和恢復。使用外部看門狗是嵌入式開發(fā)人員工具箱中一個重要且關鍵的工具。設計看門狗系統(tǒng)時應考慮五個技巧。
技巧1 – 監(jiān)控心跳
外部看門狗可以擁有的最簡單的功能是監(jiān)視由主應用處理器產(chǎn)生的心跳。監(jiān)測心跳應該有兩個不同的目的。首先,微控制器應僅在對軟件執(zhí)行功能檢查以確保其正常運行后生成心跳。其次,心跳應該能夠揭示系統(tǒng)的實時響應是否受到威脅。
可以使用簡單的“啞”外部看門狗來監(jiān)控軟件功能和實時響應的心跳。外部看門狗應該能夠分配心跳周期以及心跳必須出現(xiàn)在其中的窗口。心跳窗口的目的是讓看門狗檢測到系統(tǒng)的實時響應受到損害。如果功能或?qū)崟r檢查失敗,則看門狗會嘗試通過重置應用處理器來恢復系統(tǒng)。
技巧2 – 使用低性能 MCU
可以監(jiān)控心跳的外部看門狗成本相對較低,但會嚴重限制看門狗系統(tǒng)的能力和恢復可能性。低功能微控制器的成本幾乎與外部看門狗定時器相同,所以為什么不為看門狗增加一些智能并使用微控制器。可以開發(fā)微控制器固件以通過添加更多功能來實現(xiàn)窗口心跳監(jiān)控。像這樣的“智能”看門狗有時被稱為監(jiān)管者或安全看門狗,實際上已在汽車等不同行業(yè)使用多年。通常,微控制器看門狗是為安全關鍵型應用預留的,但考慮到開發(fā)工具和硬件成本,它在其他應用中也具有成本效益。
技巧3 – 監(jiān)督關鍵系統(tǒng)功能
嵌入式開發(fā)人員使用小型微控制器作為看門狗的決定為如何使用看門狗開辟了幾乎無限的可能性。智能看門狗的首要角色之一通常是監(jiān)督關鍵系統(tǒng)功能,例如系統(tǒng)電流或傳感器狀態(tài)。看門狗如何監(jiān)控電流的一個示例是進行獨立測量,然后將該值提供給應用處理器。然后,應用處理器可以將自己的讀數(shù)與看門狗的讀數(shù)進行比較。如果兩者之間存在分歧,那么系統(tǒng)將執(zhí)行一個被認為適合應用程序的故障樹。
技巧4 – 觀察溝通渠道
有時,嵌入式系統(tǒng)可能看起來像看門狗和應用處理器所期望的那樣運行,但從外部觀察者看來,它處于無響應狀態(tài)。在這種情況下,將智能看門狗連接到通信通道(例如 UART)會很有用。當看門狗連接到通信通道時,它不僅監(jiān)控通道流量,甚至監(jiān)控特定于看門狗的命令。一個很好的例子是為監(jiān)視飛行計算機和地面站之間的無線電通信的小型衛(wèi)星設計的看門狗。如果飛行計算機對無線電無響應,則可以向看門狗發(fā)送命令,然后執(zhí)行該命令并用于重置飛行計算機。
技巧5 – 考慮外部定時復位功能
當使用微控制器作為看門狗時,誰在看門狗的問題無疑是許多工程師的想法。使用微控制器來實現(xiàn)額外的功能會增加系統(tǒng)的復雜性和新的軟件元素。如果看門狗陷入困境,看門狗將如何恢復?一種選擇是使用前面討論過的外部看門狗定時器。智能看門狗會產(chǎn)生一個心跳,以防止自己被看門狗定時器重置。另一種選擇是讓應用處理器充當看門狗的看門狗。需要仔細考慮確保兩個處理器按預期運行的最佳方法。
結論
智能看門狗的目的是監(jiān)控系統(tǒng)和主微控制器,以確保它們按預期運行。在系統(tǒng)看門狗的設計過程中,允許支持的功能數(shù)量增加是非常誘人的。嵌入式開發(fā)人員需要記住,隨著智能看門狗復雜性的增加,看門狗本身包含潛在故障模式和錯誤的可能性也會增加。保持看門狗的簡單性和最少的必要功能集將確保它可以經(jīng)過詳盡的測試并被證明可以工作。