• 正文
    • ? 看門(mén)狗
    • ? 看門(mén)狗的正確使用
    • ? 可靠性排序與喂狗操作
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

ZLG嵌入式筆記(連載30) | 看門(mén)狗,你真的會(huì)用嗎?

03/12 16:20
773
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

嵌入式系統(tǒng)開(kāi)發(fā)中,看門(mén)狗是一種重要的機(jī)制,用于在程序異常時(shí)自動(dòng)重啟系統(tǒng),保障其穩(wěn)定性。本文將深入探討看門(mén)狗及其在程序穩(wěn)定性中的作用,幫助您更好地理解和應(yīng)用看門(mén)狗技術(shù)。

? 看門(mén)狗

首先需要明確一點(diǎn):看門(mén)狗并不能直接提升程序本身的穩(wěn)定性和可靠性。它僅能在程序運(yùn)行出現(xiàn)異常時(shí),通過(guò)重啟應(yīng)用或系統(tǒng)來(lái)恢復(fù)功能。程序的穩(wěn)定性和可靠性,從根本上來(lái)說(shuō),取決于編程過(guò)程中的規(guī)范性和嚴(yán)謹(jǐn)程度。

看門(mén)狗主要分為硬件看門(mén)狗和軟件看門(mén)狗,二者在實(shí)現(xiàn)方式和使用場(chǎng)景上存在顯著差異。

1.?硬件看門(mén)狗

硬件看門(mén)狗的核心是一個(gè)定時(shí)電路,由被監(jiān)控的CPU提供周期性的“清狗”信號(hào),即“喂狗”,以清零定時(shí)器。在CPU正常工作時(shí),能夠定時(shí)“喂狗”,因此看門(mén)狗內(nèi)的定時(shí)器不會(huì)溢出。一旦CPU出現(xiàn)故障,無(wú)法繼續(xù)提供“喂狗”信號(hào),看門(mén)狗內(nèi)的定時(shí)器就會(huì)溢出,觸發(fā)復(fù)位信號(hào),導(dǎo)致CPU重啟,俗稱(chēng)“被狗咬”。硬件看門(mén)狗又可分為兩種類(lèi)型:1.1 外部獨(dú)立硬件看門(mén)狗這種看門(mén)狗獨(dú)立于MCU/MPU之外,無(wú)需驅(qū)動(dòng)程序支持,只需在規(guī)定時(shí)間內(nèi)為喂狗引腳提供一個(gè)電平變化即可,通常通過(guò)GPIO實(shí)現(xiàn)電平切換。其喂狗時(shí)間不可設(shè)置,一旦硬件連接完成,就無(wú)法關(guān)閉,除非斷開(kāi)硬件連接。這種看門(mén)狗具有極高的可靠性,適用于對(duì)產(chǎn)品可靠性要求極高的場(chǎng)合。不過(guò),由于它是獨(dú)立的硬件設(shè)備,因此會(huì)增加一定的硬件成本。

外部獨(dú)立硬件看門(mén)狗,主要用于解決惡劣外部環(huán)境導(dǎo)致系統(tǒng)死機(jī)且無(wú)法人工干預(yù)的問(wèn)題,也能應(yīng)對(duì)硬件故障引發(fā)的系統(tǒng)死機(jī)重啟需求。

1.2 內(nèi)置硬件看門(mén)狗內(nèi)置硬件看門(mén)狗是利用處理器內(nèi)部的定時(shí)器實(shí)現(xiàn)定時(shí)操作。它需要在系統(tǒng)中編寫(xiě)驅(qū)動(dòng)程序,初始化定時(shí)器并實(shí)現(xiàn)喂狗操作,甚至可以調(diào)整定時(shí)器的參數(shù)。這種看門(mén)狗的喂狗時(shí)間可調(diào),還可以通過(guò)特殊指令關(guān)閉,成本較低。然而,在處理器死機(jī)的情況下,它可能會(huì)失效,因此適用于對(duì)硬件可靠性要求不是特別嚴(yán)格的場(chǎng)合。

內(nèi)置硬件看門(mén)狗,系統(tǒng)驅(qū)動(dòng)+應(yīng)用程序喂狗,主要用于解決應(yīng)用程序問(wèn)題引起的復(fù)位重啟,也能應(yīng)對(duì)部分外部環(huán)境導(dǎo)致的復(fù)位重啟。

2. 軟件看門(mén)狗

軟件看門(mén)狗的原理與硬件看門(mén)狗類(lèi)似,只是將硬件電路上的定時(shí)器替換為處理器的內(nèi)部定時(shí)器。這種方式可以簡(jiǎn)化硬件電路設(shè)計(jì),但在可靠性方面不如硬件定時(shí)器。例如,如果系統(tǒng)內(nèi)部定時(shí)器自身發(fā)生故障,就無(wú)法檢測(cè)到問(wèn)題。雖然可以通過(guò)雙定時(shí)器相互監(jiān)視來(lái)提高可靠性,但這不僅會(huì)增加系統(tǒng)開(kāi)銷(xiāo),也無(wú)法解決所有問(wèn)題,比如中斷系統(tǒng)故障導(dǎo)致定時(shí)器中斷失效。

軟件看門(mén)狗,系統(tǒng)驅(qū)動(dòng)+應(yīng)用程序喂狗,主要用于監(jiān)控應(yīng)用程序死機(jī)問(wèn)題。

? 看門(mén)狗的正確使用

看門(mén)狗本身并不是用來(lái)解決系統(tǒng)出現(xiàn)的問(wèn)題。在調(diào)試過(guò)程中發(fā)現(xiàn)的故障,應(yīng)該通過(guò)排查設(shè)計(jì)本身的錯(cuò)誤來(lái)解決。加入看門(mén)狗的目的是應(yīng)對(duì)程序潛在錯(cuò)誤和惡劣環(huán)境干擾等因素導(dǎo)致的系統(tǒng)死機(jī),在無(wú)人干預(yù)的情況下自動(dòng)恢復(fù)系統(tǒng)正常工作狀態(tài)。然而,看門(mén)狗也不能完全避免故障造成的損失。畢竟從發(fā)現(xiàn)故障到系統(tǒng)復(fù)位恢復(fù)正常這段時(shí)間內(nèi),系統(tǒng)會(huì)處于停滯狀態(tài)。此外,一些系統(tǒng)還需要在復(fù)位前保護(hù)現(xiàn)場(chǎng)數(shù)據(jù),并在重啟后恢復(fù)現(xiàn)場(chǎng)數(shù)據(jù),這可能需要額外的軟硬件開(kāi)銷(xiāo)。

? 可靠性排序與喂狗操作

綜合來(lái)看,看門(mén)狗的可靠性排序?yàn)椋?strong>外部獨(dú)立看門(mén)狗?>?內(nèi)置硬件看門(mén)狗?>?軟件看門(mén)狗。

對(duì)于喂狗操作,外部獨(dú)立看門(mén)狗由系統(tǒng)自動(dòng)完成,應(yīng)用程序無(wú)需關(guān)心。而應(yīng)用程序需要喂的狗要么是內(nèi)置硬件看門(mén)狗,要么是軟件看門(mén)狗,這取決于平臺(tái)本身提供的資源。

應(yīng)用程序必須在規(guī)定時(shí)間內(nèi)進(jìn)行喂狗操作,以監(jiān)控程序本身的運(yùn)行健康狀況。如果程序編寫(xiě)不當(dāng)導(dǎo)致異常不喂狗,就會(huì)引發(fā)系統(tǒng)復(fù)位重啟。這就需要程序開(kāi)發(fā)人員進(jìn)行問(wèn)題定位和排查,解決可能影響系統(tǒng)運(yùn)行的各種潛在問(wèn)題。

D9系列Cortex-A55?核心板
四/五核Cortex-A55

UART*16

CAN FD*4

千兆以太網(wǎng)*2

 

致遠(yuǎn)電子

致遠(yuǎn)電子

廣州致遠(yuǎn)電子股份有限公司成立于2001年,注冊(cè)資金5000萬(wàn)元,國(guó)家級(jí)高新技術(shù)認(rèn)證企業(yè),廣州市高端工控測(cè)量?jī)x器工程技術(shù)研究開(kāi)發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。

廣州致遠(yuǎn)電子股份有限公司成立于2001年,注冊(cè)資金5000萬(wàn)元,國(guó)家級(jí)高新技術(shù)認(rèn)證企業(yè),廣州市高端工控測(cè)量?jī)x器工程技術(shù)研究開(kāi)發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶(hù)資源
  • 寫(xiě)文章/發(fā)需求
立即登錄