為了使工業(yè)路由器、DTU、串口服務(wù)器等聯(lián)網(wǎng)設(shè)備傳輸更穩(wěn)定,這些設(shè)備中會帶有防浪涌、防靜電、防脈沖以及看門狗保護(hù)。這些硬件保護(hù)中,有一種是可以保持設(shè)備內(nèi)部進(jìn)程24小時不宕機(jī)的——看門狗技術(shù)??撮T狗是如何工作和計(jì)算的呢?
看門狗芯片,又叫看門狗定時器。它是微控制器中的一塊硬件。如果系統(tǒng)卡在某個地方, 則看門狗定時器用于生成系統(tǒng)復(fù)位,如果系統(tǒng)進(jìn)入執(zhí)行的無窮循環(huán),則看門狗定時器會將系統(tǒng)復(fù)位以擺脫無窮循環(huán)。看門狗是嵌入式系統(tǒng)中的安全機(jī)制,可使您的系統(tǒng)可靠,但是它取決于看門狗定時器的使用方式。
看門狗基本上是一個計(jì)數(shù)器,它從計(jì)數(shù)零開始并達(dá)到某個值。 如果計(jì)數(shù)器達(dá)到某個值,則看門狗硬件將生成看門狗復(fù)位。為了避免系統(tǒng)重置,軟件需要啟動看門狗, 即需要將計(jì)數(shù)器重置為零。萬一軟件陷入無休止的循環(huán),系統(tǒng)將無法踢看門狗,因此計(jì)數(shù)器達(dá)到一定值并復(fù)位系統(tǒng)。
看門狗最初加載了某些值。該值是根據(jù)看門狗的超時時間計(jì)算的(進(jìn)一步說明了如何根據(jù)超時值計(jì)算計(jì)數(shù)器值)。在超時之前,系統(tǒng)應(yīng)重置計(jì)數(shù)器。
例如,如果您的系統(tǒng)定期執(zhí)行3個任務(wù)并執(zhí)行3個任務(wù)需要500毫秒。然后將超時時間視為600 ms(考慮最壞的情況),針對600 ms計(jì)算計(jì)數(shù)器值并將其加載到看門狗中。
考慮看門狗中的系統(tǒng)正在以4 kHz時鐘工作。系統(tǒng)在450毫秒內(nèi)完成工作,最壞情況下,完成工作的時間為500毫秒。讓我們將500毫秒作為超時時間。
1/4 kHz = 0.25毫秒
1個時鐘節(jié)拍= 0.25毫秒。
500毫秒= 2000個滴答聲。
當(dāng)時鐘滴答2000次時,完成500毫秒。與超時相關(guān)的技術(shù)器值為2000.
如果看門狗計(jì)數(shù)器達(dá)到2000,它將生成一個復(fù)位信號。在達(dá)到2000之前,系統(tǒng)需要將計(jì)數(shù)器復(fù)位為0。
在操作系統(tǒng)(多任務(wù)系統(tǒng))的情況下,看門狗起著重要的作用??撮T狗可以監(jiān)視程序流,監(jiān)視任務(wù)執(zhí)行的頻率(活動監(jiān)督)。如果看門狗發(fā)現(xiàn)程序流沖突或任務(wù)執(zhí)行得太頻繁或不那么頻繁,則會生成看門狗復(fù)位。在進(jìn)行在線監(jiān)督的情況下,每個任務(wù)都會設(shè)置一個標(biāo)志,以指示任務(wù)處于在線狀態(tài),即已執(zhí)行??撮T狗監(jiān)控器功能將檢查每個任務(wù)是否都報(bào)告了活動指示。如果任務(wù)未設(shè)置為激活指示,則看門狗監(jiān)視器功能將永遠(yuǎn)不會踢看門狗,最后看門狗將重置系統(tǒng)。