對(duì)于多線程,實(shí)時(shí)和多任務(wù)嵌入式系統(tǒng)的全部復(fù)雜性,它已成為越來(lái)越難以知道什么時(shí)候一個(gè)微型的行為不端。有了這么多的服務(wù)程序操作略微獨(dú)立是非常有可能的,有人還活著,而其他人都被鎖定,死亡,或執(zhí)行無(wú)意義的代碼。因此,現(xiàn)在是比較困難的嵌入式系統(tǒng)設(shè)計(jì)師來(lái)保護(hù)整個(gè)系統(tǒng)從在一些低服務(wù)程序或內(nèi)核,走入歧途發(fā)生的故障。本文著眼于更先進(jìn)的看門狗功能不斷變化的需求和技術(shù)的工程師可以使用,以確??煽康?u>MCU操作。它探討了需要用軟件來(lái)解決這兩個(gè)外部硬件和內(nèi)部缺陷和看樣品看門狗的部分。所有部件,數(shù)據(jù)表,教程和發(fā)展引用在這里可以在網(wǎng)上對(duì)Digi-Key的網(wǎng)站上找到。
簡(jiǎn)單的保護(hù)
對(duì)于需要看門狗功能涵蓋了從4位到先進(jìn)的32位機(jī)和超越。它不是經(jīng)??梢钥吹胶?jiǎn)單的處理器執(zhí)行的潛在的危險(xiǎn)情況。例如,一個(gè)油門控制回路可以僅局部地需要一種簡(jiǎn)單的混合信號(hào)的8位微控制器,以提供穩(wěn)定的閉環(huán)控制。它可以通過(guò)命令汽車的CAN總線,可以卸載所有的處理從遠(yuǎn)程車載電腦。但是,如果簡(jiǎn)單的處理器出現(xiàn)故障,全油門可能是致命的??梢杂邪盐盏卣f(shuō),幾乎每一個(gè)現(xiàn)代的微控制器包含了一些基本的看門狗功能,無(wú)論是可用于實(shí)現(xiàn)軟件控制的看門狗功能的專用看門狗硬件模塊或通用定時(shí)器。這些都是同步到所述處理器的系統(tǒng)時(shí)鐘。隨著處理器變得更加復(fù)雜,因此也可以超頻處理器本身內(nèi)部結(jié)構(gòu)和時(shí)鐘分配。振蕩器可以是特別容易受到ESD命中,例如,如果時(shí)鐘走下來(lái),同步監(jiān)督機(jī)構(gòu)也沒(méi)有好處。的R / C振蕩器和時(shí)間常數(shù)可以是舊的學(xué)校,但可以提供獨(dú)立的時(shí)鐘機(jī)制和復(fù)位機(jī)制作為后備或備份。同樣的,冗余的內(nèi)部 - 外部振蕩器源可以提供某種形式的心跳,保持監(jiān)測(cè)電路正常工作時(shí)的不良故障。可選擇融合時(shí)鐘也很重要,因?yàn)槭窃跇涞臅r(shí)鐘(圖1)的位置。
圖1:結(jié)合系統(tǒng)時(shí)鐘進(jìn)行備份的R / C振蕩器可以降低功耗和系統(tǒng)時(shí)鐘被破壞了可靠的獨(dú)立備份時(shí)鐘監(jiān)視功能在事件。注意如何兩個(gè)R / C振蕩器用于更換預(yù)定同樣適用于低電壓檢測(cè)電路。而基本的精度可以使用內(nèi)部電壓基準(zhǔn),比較器和檢測(cè)器來(lái)實(shí)現(xiàn),外部電路可以提供更高的分辨率和更精確的電壓電平選擇性。例如,如果你的電壓故障模式軟件的一部分,包括寫入EEPROM,你可能想提前跳閘低電壓檢測(cè)器的閾值,使電容內(nèi)的電荷儲(chǔ)存足夠的時(shí)間以有序的方式關(guān)閉之前執(zhí)行EEPROM寫。現(xiàn)代的電壓檢測(cè)器可以實(shí)現(xiàn)電壓的分辨率降低到0.05 V為精確使用的所有能源。這通常是一個(gè)更好的分辨率比,你會(huì)發(fā)現(xiàn)在內(nèi)部具有微。的是,單獨(dú)的最大超時(shí)并不總是有效的另一件事情要注意。大多數(shù)看門狗方案基本上實(shí)現(xiàn)再觸發(fā)的,單穩(wěn)態(tài)觸發(fā)器(重新觸發(fā)的1次)的功能。如果軟件或硬件循環(huán)時(shí)鐘不一個(gè)最大允許時(shí)間幀,看門狗行程內(nèi)復(fù)位定時(shí)器并復(fù)位處理器(或啟動(dòng)故障恢復(fù)服務(wù)程序)。最短時(shí)間要求也感興趣。如果一個(gè)服務(wù)程序,例如,與一個(gè)60赫茲的電力線的零交叉同步,則脈沖應(yīng)8.33毫秒分開。如果他們到達(dá)的早晚,噪聲或故障情況,必須加以處理,往往與安全的后果。多處理器和多核心的設(shè)計(jì)有特殊的情況。個(gè)別監(jiān)督者應(yīng)設(shè)置為監(jiān)視每個(gè)處理器核心或與該處理器當(dāng)時(shí)運(yùn)行的代碼的獨(dú)特條件。這意味著針對(duì)在多核環(huán)境中的核心,應(yīng)該隨身攜帶它的具體監(jiān)督情況表明發(fā)生故障的特定代碼塊的軟件開發(fā)的一部分。此外,看門狗報(bào)告應(yīng)該是分層的。每個(gè)核心應(yīng)報(bào)告給更高級(jí)別的看門狗來(lái)自所有subcores和過(guò)程報(bào)告的所有的故障模式聯(lián)系在一起。作為上位系統(tǒng)的功能,一個(gè)看門狗行政工作的手在手與主任務(wù)執(zhí)行該分配碼塊以特定的核。它也應(yīng)該與外部監(jiān)督系統(tǒng)的緊密合作。線或型多看門狗塊可以很容易地?cái)U(kuò)展到使用I / O具體到一個(gè)核心中(圖2)報(bào)告。它可以是FPGA或CPLD內(nèi)部的一個(gè)獨(dú)立的邏輯塊和處理多個(gè)處理器和街區(qū),可輕松擴(kuò)展。的寄存器可以積累所有報(bào)告塊的獨(dú)立地位,試圖單獨(dú)恢復(fù)的核心。正如你可能想象,恢復(fù)程序變得更加復(fù)雜,在這個(gè)級(jí)別一樣如何重新引導(dǎo)內(nèi)核,而讓系統(tǒng)運(yùn)行的其余部分。
圖2:看門狗層次的頂層可以使用可膨脹的線或功能,以允許所有萬(wàn)分之一或內(nèi)核,在他們自己的報(bào)告率在。每1次應(yīng)該允許它被監(jiān)測(cè)的時(shí)間間隔進(jìn)行編程的過(guò)程。它監(jiān)視每一個(gè)參數(shù)的代碼塊進(jìn)行。
零件進(jìn)行特殊的看門狗功能
幾萬(wàn)分之一擁有獨(dú)特的或不同的功能,當(dāng)談到他們?nèi)绾螌?shí)現(xiàn)自己的監(jiān)督者。就拿16位馬克西姆MAXQ系列,它結(jié)合了靈活的定時(shí)器種類豐富巧妙的電路,以提高實(shí)用性。如Maxim的MAXQ2000-RBX +部件有戒備二級(jí)。如果沒(méi)有維修和MAXQ2000的WDT溢出,引發(fā)與512額外的系統(tǒng)時(shí)鐘周期的額外計(jì)數(shù)中斷。然后,將所有如果沒(méi)有禁用或覆蓋。這種中斷提供了“最后一次機(jī)會(huì)”來(lái)保存調(diào)試信息,大多數(shù)的設(shè)計(jì)師達(dá)成了共識(shí),電路開發(fā)和故障排除過(guò)程中非常有用的機(jī)會(huì)。更重要的是,而不是保存調(diào)試信息,中斷可用于從錯(cuò)誤中恢復(fù)和清除看門狗。這后一種方法,但是,可以破壞系統(tǒng)的可靠性,如果一個(gè)系統(tǒng)存在故障。像其他內(nèi)部WDTS,MAXQ2000的看門狗可以通過(guò)軟件禁止。但是,請(qǐng)注意,此功能是一個(gè)雙刃劍:失控代碼可以禁用看門狗,然后繼續(xù)橫行。一些微處理器他們WDT到內(nèi)部振蕩器獨(dú)立于系統(tǒng)時(shí)鐘。有些使用內(nèi)部或外部的R / C振蕩器,有些可以同時(shí)使用。一個(gè)有趣的功能存在于馬克西姆MAXQ2000的WDT派生看門狗定時(shí)由系統(tǒng)時(shí)鐘,但將切換到備份RC振蕩器在主振蕩器一個(gè)故障的情況下。另一個(gè)有趣的MCU具有獨(dú)特的看門狗功能是STM32F100系列意法半導(dǎo)體萬(wàn)分之一,其中有兩個(gè)看門狗定時(shí)器。像STM32F100CBT6B零件的目標(biāo)需要有可靠的智能電網(wǎng)和智能醫(yī)療應(yīng)用。像大多數(shù)萬(wàn)分之一,它有多個(gè)定時(shí)器,在這種情況下6,與另兩個(gè)16位的定時(shí)器專用于看門狗功能。每個(gè)看門狗具有一個(gè)可選擇的預(yù)分頻器(從1到64 K),可用于時(shí)鐘看門狗定時(shí)器也能觸發(fā)DMA請(qǐng)求和捕獲比較通道。還有一個(gè)獨(dú)立的看門狗是基于一個(gè)112位的遞減計(jì)數(shù)器和8位預(yù)分頻器由一個(gè)獨(dú)立的40 kHz內(nèi)部的R / C振蕩器時(shí)鐘。請(qǐng)注意這兩個(gè)部分是如何依賴于R / C元件的超可靠的備份技術(shù)。意法半導(dǎo)體部分的一個(gè)有趣的特點(diǎn)是模擬看門狗功能。精確監(jiān)測(cè)的從A / Ds的一個(gè)或多個(gè)轉(zhuǎn)換后的電壓電平可以跳閘復(fù)位如果模擬水平編程閾值之外。這對(duì)于其中傳感器連接到一個(gè)身體區(qū)域網(wǎng)絡(luò)健康監(jiān)測(cè)或活性藥物分配(圖3)的醫(yī)療應(yīng)用中是有用的。作為一個(gè)輔助設(shè)計(jì),意法半導(dǎo)體為工程師提供醫(yī)療保健和健康設(shè)計(jì)一個(gè)產(chǎn)品培訓(xùn)模塊。
圖3:作為醫(yī)療裝置集成更積極地與我們的身體區(qū)域網(wǎng)絡(luò),一些設(shè)備(起搏器,除顫器,胰島素泵等)可能是極其重要的維持生命。可靠監(jiān)督者需要被工程化到這些系統(tǒng)。
在外面看
有幾個(gè)不錯(cuò)的積木式的外部解決方案,包括簡(jiǎn)單的R / C門檻發(fā)電機(jī),偏置的晶體管,低功耗定時(shí)器和專用的上電復(fù)位和看門狗伴侶處理器。此外,開發(fā)環(huán)境提供了鼓勵(lì)試驗(yàn)和易用性測(cè)試。德州儀器(TI)提供了一個(gè)有趣的解決方案以其TPL5000納米功耗可編程定時(shí)器,吸引了30 nA的在寬1.8至5 VCC。該TPL5000EVM評(píng)估套件可讓您測(cè)試和一個(gè)可愛(ài)的小自包含的模塊優(yōu)化此功能。幾個(gè)離散的監(jiān)督者可結(jié)合其他有用的功能,例如實(shí)時(shí)時(shí)鐘和監(jiān)控功能。一個(gè)有趣的組合是來(lái)自萊迪思半導(dǎo)體公司,其ISPPAC-POWR607-01SN32I電源監(jiān)控器,看門狗和復(fù)位發(fā)生器(圖4)。注1%的模擬跳變點(diǎn)步長(zhǎng)和在系統(tǒng)可編程宏小區(qū)的狀態(tài)機(jī)和組合定制。
圖4:在系統(tǒng)用戶可編程參數(shù)允許看門狗功能,動(dòng)態(tài)決定通過(guò)使用組合和狀態(tài)機(jī)為基礎(chǔ)的用戶可配置邏輯。
結(jié)論
請(qǐng)記住,有次在那里不會(huì)有任何幫助恢復(fù)系統(tǒng)。有些故障模式是不可恢復(fù)的。例如,如果系統(tǒng)內(nèi)存損壞,沒(méi)有別的可以信任。另一種情況是,如果有非常高的水平的噪音。即使看門狗復(fù)位處理器,噪聲可以與看門狗級(jí)的處理器的初始化干擾。如果看門狗功能ca的不被初始化,這是因?yàn)槿绻麤](méi)有看門狗可言。沒(méi)有人可以依靠任何MCU對(duì)100%的無(wú)故障運(yùn)行所有的時(shí)間。 MICROS可能會(huì)出現(xiàn)偏差。但是,聰明的利用內(nèi)部和外部資源可以做一個(gè)溫和的故障和災(zāi)難性的財(cái)產(chǎn)損失,甚至失去生命之間的差異。