我們都知道硬件看門狗的目的:是用來監(jiān)測系統(tǒng),防止系統(tǒng)死機,并在死機的情況下使其系統(tǒng)復(fù)位重啟。
在RTOS操作系統(tǒng)中,如果任務(wù)(線程)較多,出現(xiàn)高優(yōu)先級任務(wù)長時間占用CPU資源,低優(yōu)先級任務(wù)長時間得不到執(zhí)行這種想象,那么我們的系統(tǒng)就是具有“Bug”的系統(tǒng)。
如上描述,假如我們的線程沒有死機,只是長時間得不到執(zhí)行。在這種異常情況下,我們又不希望系統(tǒng)復(fù)位,只希望執(zhí)行特定代碼,那我們該如何來避免這種問題呢?
1
關(guān)于看門狗硬件看門狗:利用一個定時器計數(shù)電路,其定時輸出連接到電路的復(fù)位端,程序在一定時間范圍內(nèi)對定時“喂狗”。
因此程序正常工作時,定時器總不能溢出,也就不能產(chǎn)生復(fù)位信號。如果程序出現(xiàn)故障,不在定時周期內(nèi)喂狗,就使得看門狗定時器溢出產(chǎn)生復(fù)位信號并重啟系統(tǒng)。
在STM32中,有兩個看門狗:獨立看門狗和窗口看門狗。原理和功能都類似,只是應(yīng)用場景不一樣。
軟件看門狗:軟件看門狗和硬件看門狗原理類似,都是定期(在時間溢出之內(nèi)),對其喂狗。只是軟件喂狗的方式是通過自身設(shè)計的計數(shù)來實現(xiàn)。
2
硬件+軟件看門狗監(jiān)測多任務(wù)的原理
1.利用一個監(jiān)測線程(自身),來監(jiān)測其它多個線程;2.利用硬件看門狗來監(jiān)測自身。
如圖:
假如我系統(tǒng)中有多個應(yīng)用線程(如上圖),我就利用一個監(jiān)測線程(自身),來監(jiān)測其它多個應(yīng)用線程。
同時,為了防止自身線程異常,利用一個硬件看門狗來監(jiān)測自身。這樣就可以做到雙重監(jiān)測的作用。
3
結(jié)合軟件來講原理上一節(jié)上述的原理可能對于有些人來說,是比較抽象的。那么這一節(jié)來看看代碼:
監(jiān)測線程(自身):
簡單來說:在監(jiān)測線程(自身)之中,需要對硬件看門狗進行喂狗。軟件看門狗的角色:在這里就是對齊計數(shù),瀏覽是否溢出,我把它封裝成一個瀏覽函數(shù)。具體的喂狗就在其他各個被監(jiān)測的線程中。
那么,再看軟件看門狗對其中一個應(yīng)用線程喂狗的代碼:
這里只是簡單的舉例,一個主線程里面的喂狗。相當(dāng)于:我線程啟動之后,就需要定時喂狗。如果這里長時間不喂狗,那么監(jiān)測線程(自身)就會發(fā)現(xiàn)你沒有喂狗。
4
簡答的實現(xiàn)方法
看到這里,相信大家都知道其原理了。具體實現(xiàn)的方式方法很多種,可根據(jù)自己實際項目需要,添加相應(yīng)的接口。這里舉例幾點吧。
定義一個數(shù)據(jù)結(jié)構(gòu):
這里舉例,是實現(xiàn)最基礎(chǔ)的東西,比如計數(shù)器,最大超時值等。
注冊接口函數(shù):
監(jiān)測瀏覽函數(shù)接口:
以上只是教大家方法,具體的實現(xiàn),可自己根據(jù)自己習(xí)慣,項目需求來定制化開發(fā)。
------------ END ------------
責(zé)任編輯:lq
-
看門狗
+關(guān)注
關(guān)注
10文章
580瀏覽量
71627 -
定時器
+關(guān)注
關(guān)注
23文章
3290瀏覽量
117441 -
線程
+關(guān)注
關(guān)注
0文章
507瀏覽量
20109
原文標(biāo)題:基于STM32、FreeRTOS實現(xiàn)硬件看門狗+軟件看門狗監(jiān)測多任務(wù)的思路
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
TPS3431 帶啟用功能的標(biāo)準(zhǔn)可編程看門狗定時器數(shù)據(jù)手冊

TPS3430 具有可編程復(fù)位延遲的窗口看門狗定時器數(shù)據(jù)手冊

TPS3430-Q1 具有可編程復(fù)位延遲的汽車級窗口看門狗定時器數(shù)據(jù)手冊

TPS3435 納米靜態(tài)電流精密超時看門狗定時器數(shù)據(jù)手冊


什么是看門狗?這樣的看門狗,你想領(lǐng)養(yǎng)一條嗎? #看門狗復(fù)位芯片 #WDT芯片 #單片機復(fù)位 #單片機方案
看門狗,你真的會用嗎?

圣邦微電子SGM819SxQ車規(guī)級看門狗定時器電路特性與數(shù)據(jù)手冊分享

安利給工程師!看門狗相關(guān)知識

抄作業(yè)!看門狗定時器必備知識

一文詳解看門狗/電壓監(jiān)控芯片規(guī)格書

看門狗定時器的工作原理

單片機開發(fā):使用內(nèi)部看門狗定時器(WDT)還是外掛看門狗芯片?
Sitara AM6442 RTI看門狗調(diào)試

評論