當(dāng)你在家工作時(shí),有一些工作的好處。您可以自己做飯,在午餐時(shí)洗一些衣物,然后喝所有你想要的茶。我用一個(gè)爐頂水壺為我的茶煮水,所以當(dāng)我進(jìn)入書(shū)寫區(qū)時(shí),我依靠它的高音哨聲告訴我它什么時(shí)候完成。
除非有時(shí)候我在不小心,我蓋不好蓋子。結(jié)果,盡管其內(nèi)部的液態(tài)水迅速變成氣體,但水壺保持沉默。在這種情況下,我的粗心行為只意味著我會(huì)少喝茶,在嵌入式系統(tǒng)中,如果你不知道如何操作看門狗定時(shí)器(WDT),后果會(huì)更高。當(dāng)您的WDT無(wú)法運(yùn)行時(shí),停滯的微控制器將保持停滯狀態(tài)并導(dǎo)致嵌入式系統(tǒng)保持關(guān)閉狀態(tài)。讓我們看一下如何讓它們?cè)诘谝淮螄L試時(shí)正常運(yùn)行,以便您可以避免這種情況。
為什么嵌入式系統(tǒng)盡管有WDT仍然無(wú)法恢復(fù)
WDT是電子設(shè)備中的一種簡(jiǎn)單故障安全功能,可在硬件或軟件崩潰時(shí)幫助重啟微控制器。 WDT可作為單獨(dú)的集成(IC)或微控制器內(nèi)部的內(nèi)置功能提供。不使用WDT在嵌入式系統(tǒng)中,設(shè)計(jì)通常是不可原諒的罪。
WDT的操作方式很簡(jiǎn)單。它被編程為在設(shè)定的時(shí)間間隔內(nèi)倒計(jì)時(shí)。在正常操作下,微控制器會(huì)定期刷新WDT的倒數(shù)計(jì)時(shí)器,以防止它過(guò)期。如果微控制器沒(méi)有響應(yīng),則不會(huì)刷新WDT。結(jié)果,當(dāng)WDT到期時(shí),它將觸發(fā)脈沖或信號(hào)以復(fù)位微控制器。這個(gè)簡(jiǎn)單的功能可以補(bǔ)償可能導(dǎo)致微控制器崩潰的設(shè)計(jì)錯(cuò)誤或環(huán)境因素。
然而,如果您的WDT出現(xiàn)故障,那么您的嵌入式系統(tǒng)不太可能從其錯(cuò)誤狀態(tài)中恢復(fù)。這就是為什么重要的是要找出WDT可能無(wú)法復(fù)位微控制器的原因。最明顯的答案是WDT有問(wèn)題。但是,如果您反復(fù)使用多個(gè)單元中的嵌入式系統(tǒng)無(wú)法恢復(fù),那么您的設(shè)計(jì)就會(huì)出現(xiàn)問(wèn)題。
實(shí)際上,在我設(shè)計(jì)和部署數(shù)百個(gè)基于微控制器的設(shè)備的多年中,我從來(lái)沒(méi)有遇到過(guò)一次WDT失敗的案例。根本原因通常只是人為錯(cuò)誤。
當(dāng)WDT無(wú)法恢復(fù)停滯的微控制器時(shí)所見(jiàn)到的
為什么WDT可能無(wú)法正常運(yùn)行
對(duì)于使用內(nèi)部WDT的嵌入式系統(tǒng),如果無(wú)意中覆蓋了配置位,則運(yùn)行代碼可以取消激活WDT。外部WDT遇到完全不同的問(wèn)題。在這種情況下,當(dāng)固件工程師開(kāi)發(fā)和調(diào)試程序時(shí),它有一個(gè)跳線引腳可以斷開(kāi)外部WDT的復(fù)位信號(hào)。這些跳線通常需要在現(xiàn)場(chǎng)部署單元之前手動(dòng)連接。如果不是,那么WDT復(fù)位信號(hào)將保持?jǐn)嚅_(kāi)狀態(tài),無(wú)法復(fù)位微控制器。
WDT無(wú)法正常工作的另一個(gè)原因是編碼錯(cuò)誤。如果刷新WDT定時(shí)器的功能放在程序的錯(cuò)誤部分,它們將無(wú)法運(yùn)行。當(dāng)實(shí)時(shí)操作系統(tǒng)(RTOS)中存在多個(gè)具有不同優(yōu)先級(jí)的任務(wù)時(shí),微控制器的固件變得復(fù)雜。即使較低優(yōu)先級(jí)的任務(wù)處于異常無(wú)限循環(huán)中,優(yōu)先級(jí)較高的任務(wù)也可能繼續(xù)執(zhí)行。如果刷新WDT定時(shí)器是最高優(yōu)先級(jí)的任務(wù),那么當(dāng)微控制器不能正常工作時(shí),它將不會(huì)刷新。
確保這樣做是好的做法WDT正確刷新
如何確保WDT可靠運(yùn)行
確保WDT完成其工作涉及固件開(kāi)發(fā)人員,系統(tǒng)安裝程序和硬件。固件開(kāi)發(fā)人員應(yīng)該在編程中應(yīng)用最佳實(shí)踐,以避免關(guān)閉內(nèi)部WDT的代碼溢出。固件開(kāi)發(fā)人員必須很好地理解微控制器的存儲(chǔ)器架構(gòu)以及如何在代碼中正確使用存儲(chǔ)器指針和分配。
除此之外,應(yīng)該起草程序的結(jié)構(gòu)以便WDT在程序的適當(dāng)位置刷新。這意味著如果在程序中的任何一點(diǎn)產(chǎn)生無(wú)限循環(huán),程序?qū)⒂|發(fā)復(fù)位。您還可以開(kāi)發(fā)一個(gè)測(cè)試實(shí)用程序來(lái)檢查現(xiàn)場(chǎng)WDT的功能。這也消除了在外部WDT和微控制器之間丟失任何斷開(kāi)的跳線引腳的風(fēng)險(xiǎn)。
最后但并非最不重要的是,需要正確的PCB設(shè)計(jì)以確保WDT可靠地運(yùn)行。使用外部WDT進(jìn)行設(shè)計(jì)時(shí),您需要確保刷新信號(hào)遠(yuǎn)離其他高速信號(hào)。這是為了防止交叉耦合電干擾刷新WDT。您可以使用Altium的CircuitStudio?等PCB設(shè)計(jì)軟件設(shè)置精確的間隙規(guī)則,以確保WDT的信號(hào)完整性。
對(duì)WDT設(shè)計(jì)有疑問(wèn)嗎?和Altium的專家交談。
檢查Altium的運(yùn)行情況......
強(qiáng)大的PCB設(shè)計(jì)
-
pcb
關(guān)注
4323文章
23135瀏覽量
398874 -
電路設(shè)計(jì)
+關(guān)注
關(guān)注
6678文章
2459瀏覽量
204933
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論