由于多線程、實時和多任務嵌入式系統的情況紛繁復雜,使我們越來越難以預料微處理器會在什么時候出現問題。 在某種程度上獨立運行的服務程序是如此之多,其中一些很有可能會生存下來,而其它的則被鎖定、廢棄或者執行無用代碼。
因此,嵌入式系統設計人員要在一些低級別服務程序或者內核出現偏差時保護整個系統并防止出現故障,現在已是難上加難。
本文介紹看門狗功能的發展需要,且技術工程師們能通過這些功能確保 MCU 可靠工作。 本文將詳細考察需要在硬件中從外部、在軟件中從內部克服的不足之處,并介紹一些看門狗零件樣件。
簡單保護
從 4 位到至高級的 32 位及以上的機器都需要有看門狗功能。 在潛在危險情況下工作的簡單處理器不在少數。 例如,一個節流閥控制回路僅需一個簡單的 8 位混合信號微控制器,以本地方式實現穩定的閉環控制。 該控制器能夠在車輛 CAN 總線上接受指令,從遠程車載電腦卸載全部處理任務。 然而,如果這個簡單的處理器出現故障,那么整個節流閥將起不到任何作用。
可以肯定地說,幾乎每一個現代微控制器都具有一些簡單的看門狗功能——專門的看門狗硬件塊或者能夠用來執行軟件控制型看門狗功能的定時器。 這些設備均與處理器中的系統時鐘實現了同步。
隨著處理器越來越復雜,處理器內部的時鐘結構和時鐘分布也更加復雜。 振蕩器特別容易遭受 ESD 沖擊,例如,如果時鐘性能下降,同步看門狗將毫無用處。
R/C 振蕩器和時間常數雖然保守,但能提供獨立時鐘機制和復位機制,作為應急或后備之用。 同樣,冗余型內部和外部振蕩器源能實現某種形式的心跳效果,以確保在嚴重故障期間監視電路。 此外,可選擇的時鐘集成性與結構樹中的時鐘位置同樣重要(圖 1)。
圖 1:系統時鐘和后備 R/C 振蕩器組合在一起可節省功耗,并能在系統時鐘崩潰時提供一個可靠獨立的后備時鐘,確保看門狗功能正常。 請注意此處兩個 R/C 振蕩器的使用方式。
對于低壓檢測電路來說,也是如此。 雖然采用內部電壓基準、比較器和檢測器能夠實現基本精度,但通過外部電路可實現更高的分辨率和更精確的電壓電平選擇性。 例如,如果您的部分電壓故障模式軟件包括寫入 EEPROM 功能,您可能希望低壓檢測器閾值提早跳變,以使容性電荷存儲器有足夠的時間在按順序關斷之前執行 EEPROM 寫入功能。 現代電壓檢測器能夠達到低至 0.05 V 的電壓分辨率,以便精確使用所有能量。 通常,這個分辨率要遠勝于您利用微控制器從內部實現的分辨率。
還需要了解的一點是單獨的最大超時并非始終有效。 大多數看門狗解決方案基本上在執行一個可再觸發式單穩態多諧振蕩器(可再觸發式單觸發)的功能。 如果軟件或者硬件周期時鐘不能在最大允許時間幀內使定時器復位,看門狗跳變并會使處理器復位(或者啟動故障恢復服務程序)。
最小時間要求也應考慮。 例如,如果一個服務程序與 60 Hz 電源線的過零點同步,那么脈沖間隔應是 8.33 ms。 如果這些脈沖過早達到,則必須克服通常會影響安全的噪聲或者故障條件。
多處理器和多核設計的情況特殊。 應對單獨的看門狗進行設置,以利用當時在每個理器中運行的唯一代碼條件來監視這些處理器或內核。 也就是說,針對多核環境中某個內核的部分軟件開發應帶有能指示特定代碼塊故障的看門狗條件。
此外,看門狗報告應采用層級結構。 每個內核應向更高層級的看門狗報告,該看門狗把由所有子核和流程報告的全部故障模式聯系在一起。 作為一個高層級系統功能,看門狗執行程序與為特定內核分配代碼塊的主任務執行程序同步工作。 另外,也與外部看門狗系統密切合作。
線或類型多看門狗模功能塊能很容易地進行擴展,以使用特定于某個內核的 I/O 進行報告(圖 2)。 該功能塊可以是 FPGA 或者 CPLD 中的獨立邏輯塊,且易于擴展,能應對多個處理器和功能塊。 寄存器能夠累加所有報告功能塊的獨立狀態,以試圖單獨恢復那個內核。 如您所想,這個層級的恢復程序會變得更復雜,就像在保持系統其余部分運行的同時重新啟動內核那樣。
圖 2:看門狗層級結構的頂層能使用可擴展線或功能,以使所有微處理器或內核能按照各自的速率進行報告。 每個“單觸發”都應允許受其監視的進程按持續間隔進行編程。 每個代碼塊均攜帶看門狗參數。
具有特殊看門狗功能的零件
在涉及到如何實現看門狗功能時,有多種微處理器具有唯一或不同的功能。 以 16 位 Maxim MaxQ 系列微控制器為例,為提升有用性,該系列將類型豐富而靈活地定時器和設計巧妙的電路組合在一起。 象 Maxim MAXQ2000-RBX+ 這樣的零件具有次級報警。 如果沒有報警且 MAXQ2000 的看門狗 (WTD) 發生溢出,那么,再次經過另外 512 個系統時鐘周期計數后該微控制器會觸發一個中斷。 然后,如果未被禁用或覆蓋,它會使全部定時器復位。
這種中斷為保存調試信息提供了“最后的機會”——一個得到了大多數設計人員的一致認可、在電路開發、故障清除期間非常有用的機會。 而且,該中斷可用于將看門狗從錯誤中恢復并將其清空,而不是保存調試信息。 然而,后一種方法在系統發生故障時會削弱系統可靠性。
與其它內部 WDT 類似,MAXQ2000 的看門狗可通過軟件禁用。 不過應當注意,這種功能就像一把雙刃劍:失控代碼禁用看門狗后仍處于失控狀態。
一些微處理器的 WDT 會與獨立于系統時鐘的內部振蕩器連接。 還有一些微處理器使用內部或外部 R/C 振蕩器,有的同時使用這些振蕩器。 Maxim MAXQ2000 的 WDT 上有一個令人感興趣的功能:雖然從系統時鐘驅動看門狗定時功能,但能在主振蕩器故障時切換至備用振蕩器。
另一種讓人關注并具有獨特看門狗功能的 MCU 便是采用兩個看門狗定時器的 STM32F100 系列(由 STMicroelectronics 提供)。 象 STM32F100CBT6B 這樣的零件均針對要求高可靠性的智能電網和智能健康應用。 同大多數微處理器一樣,該器件也采用了多個定時器(此處為六個),且另外有兩個 16 位定時器專用于看門狗功能。
每個看門狗都具有一個為看門狗定時器提供時鐘的可選擇預分頻器 (1 - 64 K),同時還能觸發 DMA 請求并捕獲比較通道。 另一種獨立的看門狗基于一個 112 位下變頻器和 8 位預分頻器,并采用獨立的 40 kHz 內部 R/C 振蕩器提供時鐘。 注意這兩種零件如何依賴 R/C 元件,將其作為超可靠的后備技術。
STMicroelectronics 零件吸引人的一個特性就是模擬看門狗功能。 對經過 A/D 轉換的一個或兩個電壓電平進行精確監視,能在模擬電平超過預設閾值時使復位跳變。 對于那些通過傳感器與人體局域網連接且用于健康監視或主動給藥的醫療應用,該功能會非常有用(圖 3)。 為方便設計,STMicroelectronics 向工程師們提供有關健康和醫療保健設計的產品培訓模塊。
圖 3:隨著醫療設備越來越積極地與我們的人體局域網集成在一起,一些設備(心臟起搏器、除顫器、胰島素泵等)在維持人的生命中可能會發揮至關重要的作用。 需要在這些系統中集成可靠的看門狗。
由外向內看
許多好的構造塊外部解決方案包括簡單的 R/C 閾值發生器、偏置晶體管、低功耗定時器,以及專用上電復位和看門狗協處理器。 此外,現在已有可用的開發環境,鼓勵人們進行實驗和簡化測試。Texas Instruments 利用其 TPL5000 毫微功耗可編程定時器提供了一種令人感興趣的解決方案,該方案在 1.8 - 5 VCC 寬電壓范圍內的電流消耗僅 30 nA。 TPL5000EVM 評估套件能讓您在一個小而精致的自足式模塊中測試、優化該功能。
目前,已有多種分立式看門狗可與其它有用的功能組合在一起,如實時時鐘 和 監視功能。 Lattice Semiconductor 提供了一個值得關注的組合品,帶有其 ISPPAC-POWR607-01SN32I 電源監控器、看門狗和復位發生器(圖 4)。 請注意 1% 的模擬跳變點步長值以及用于狀態機和組合式定制的在系統編程宏單元。
圖 4:利用在系統用戶可編程參數,可通過使用組合式和基于狀態機的用戶可配置邏輯,實現看門狗功能的動態確定。
總結
謹記有時候做何事情都無助于系統恢復。 有些故障是不可恢復的。 例如,如果系統存儲器崩潰,那么就再沒有什么可值得信任了。
另一種情況是如果存在很高級別的噪音。 即使看門狗使處理器復位,這種噪聲仍能影響處理器的看門狗級初始化。 如果看門狗功能未被初始化,看門狗就如形同虛設。
任何人都不能指望任何 MCU 在任何時候都能百分之百無故障運行。 微處理器也可能出錯。 然而,是僅出現輕微故障,還是災難性財產損壞或者甚至死亡,關鍵在于能否合理使用內外資源。
-
mcu
+關注
關注
146文章
17315瀏覽量
352220 -
嵌入式
+關注
關注
5090文章
19176瀏覽量
306860 -
微處理器
+關注
關注
11文章
2274瀏覽量
82654
發布評論請先 登錄
相關推薦
評論