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