0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32、FreeRTOS 實(shí)現(xiàn)硬件看門狗+軟件看門狗監(jiān)測(cè)多任務(wù)的方法

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-12 10:11 ? 次閱讀

我們都知道硬件看門狗的目的:是用來監(jiān)測(cè)系統(tǒng),防止系統(tǒng)死機(jī),并在死機(jī)的情況下使系統(tǒng)復(fù)位重啟。

RTOS操作系統(tǒng)中,如果任務(wù)(線程)較多,出現(xiàn)高優(yōu)先級(jí)任務(wù)長(zhǎng)時(shí)間占用CPU資源,低優(yōu)先級(jí)任務(wù)長(zhǎng)時(shí)間得不到執(zhí)行這種想象,那么我們的系統(tǒng)就是具有Bug的系統(tǒng)。

如上描述,假如我們的線程沒有死機(jī),只是長(zhǎng)時(shí)間得不到執(zhí)行。在這種異常情況下,我們又不希望系統(tǒng)復(fù)位,只希望執(zhí)行特定代碼,那我們?cè)撊绾蝸肀苊膺@種問題呢?

Ⅰ關(guān)于看門狗

硬件看門狗:利用一個(gè)定時(shí)器計(jì)數(shù)電路,其定時(shí)輸出連接到電路的復(fù)位端,程序在一定時(shí)間范圍內(nèi)對(duì)定時(shí)“喂狗”。

因此程序正常工作時(shí),定時(shí)器總不能溢出,也就不能產(chǎn)生復(fù)位信號(hào)。如果程序出現(xiàn)故障,不在定時(shí)周期內(nèi)喂狗,就使得看門狗定時(shí)器溢出產(chǎn)生復(fù)位信號(hào)并重啟系統(tǒng)。

STM32中,有兩個(gè)看門狗:獨(dú)立看門狗和窗口看門狗。原理和功能都類似,只是應(yīng)用場(chǎng)景不一樣。

軟件看門狗:軟件看門狗和硬件看門狗原理類似,都是定期(在時(shí)間溢出之內(nèi)),對(duì)其喂狗。只是軟件喂狗的方式是通過自身設(shè)計(jì)的計(jì)數(shù)來實(shí)現(xiàn)。

Ⅱ硬件+軟件看門狗監(jiān)測(cè)多任務(wù)的原理

1.利用一個(gè)監(jiān)測(cè)線程(自身),來監(jiān)測(cè)其它多個(gè)線程;

2.利用硬件看門狗來監(jiān)測(cè)自身。

如圖:

假如我系統(tǒng)中有多個(gè)應(yīng)用線程(如上圖),我就利用一個(gè)監(jiān)測(cè)線程(自身),來監(jiān)測(cè)其它多個(gè)應(yīng)用線程。

同時(shí),為了防止自身線程異常,利用一個(gè)硬件看門狗來監(jiān)測(cè)自身。這樣就可以做到雙重監(jiān)測(cè)的作用。

Ⅲ結(jié)合軟件來講原理

上一節(jié)上述的原理可能對(duì)于有些人來說,是比較抽象的。那么這一節(jié)來看看代碼:

監(jiān)測(cè)線程(自身):

簡(jiǎn)單來說:在監(jiān)測(cè)線程(自身)之中,需要對(duì)硬件看門狗進(jìn)行喂狗。軟件看門狗的角色:在這里就是對(duì)齊計(jì)數(shù),瀏覽是否溢出,我把它封裝成一個(gè)瀏覽函數(shù)。具體的喂狗就在其他各個(gè)被監(jiān)測(cè)的線程中。

那么,再看軟件看門狗對(duì)其中一個(gè)應(yīng)用線程喂狗的代碼:

這里只是簡(jiǎn)單的舉例,一個(gè)主線程里面的喂狗。相當(dāng)于:我線程啟動(dòng)之后,就需要定時(shí)喂狗。如果這里長(zhǎng)時(shí)間不喂狗,那么監(jiān)測(cè)線程(自身)就會(huì)發(fā)現(xiàn)你沒有喂狗。

Ⅳ簡(jiǎn)答的實(shí)現(xiàn)方法

看到這里,相信大家都知道其原理了。具體實(shí)現(xiàn)的方式方法很多種,可根據(jù)自己實(shí)際項(xiàng)目需要,添加相應(yīng)的接口。這里舉例幾點(diǎn)吧。

定義一個(gè)數(shù)據(jù)結(jié)構(gòu):

這里舉例,是實(shí)現(xiàn)最基礎(chǔ)的東西,比如計(jì)數(shù)器,最大超時(shí)值等。

注冊(cè)接口函數(shù):

監(jiān)測(cè)瀏覽函數(shù)接口:

以上只是教大家方法,具體的實(shí)現(xiàn),可自己根據(jù)自己習(xí)慣,項(xiàng)目需求來定制化開發(fā)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 看門狗
    +關(guān)注

    關(guān)注

    10

    文章

    562

    瀏覽量

    70810
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356046
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62181
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    一、關(guān)于一些看門狗、電壓監(jiān)控的疑問?1.什么是看門狗看門狗,又叫Watchdog,本質(zhì)上來說就是一個(gè)定時(shí)器電路,一般有一個(gè)輸入和一個(gè)輸出,其中輸入叫做喂狗,輸出一般連接到另外一個(gè)部分的復(fù)位端,一般
    的頭像 發(fā)表于 12-26 17:18 ?118次閱讀
    一文詳解<b class='flag-5'>看門狗</b>/電壓監(jiān)控芯片規(guī)格書

    常用硬件看門狗電路

    硬件看門狗電路分享
    的頭像 發(fā)表于 12-18 14:09 ?339次閱讀
    常用<b class='flag-5'>硬件</b><b class='flag-5'>看門狗</b>電路

    4G模組的隱形守護(hù)者:硬件看門狗的秘密

    今天將對(duì)4G模組的隱形守護(hù)者-看門狗做出詳細(xì)解析,希望大家留言共同探討。
    的頭像 發(fā)表于 11-17 09:54 ?292次閱讀
    4G模組的隱形守護(hù)者:<b class='flag-5'>硬件</b><b class='flag-5'>看門狗</b>的秘密

    看門狗定時(shí)器的工作原理

    看門狗定時(shí)器是一種獨(dú)立的計(jì)時(shí)器硬件模塊,其核心功能是倒計(jì)時(shí)。如果系統(tǒng)軟件在計(jì)時(shí)器超時(shí)前沒有對(duì)其進(jìn)行復(fù)位操作(即“喂狗”),看門狗將觸發(fā)一個(gè)預(yù)定義的動(dòng)作,通常是系統(tǒng)復(fù)位或中斷。
    的頭像 發(fā)表于 10-21 14:18 ?448次閱讀
    <b class='flag-5'>看門狗</b>定時(shí)器的工作原理

    單片機(jī)開發(fā):使用內(nèi)部看門狗定時(shí)器(WDT)還是外掛看門狗芯片?

    ,單片機(jī)會(huì)持續(xù)刷新計(jì)時(shí)器的值,以防止其進(jìn)入復(fù)位狀態(tài),也就是“踢看門狗”。 單片機(jī)開發(fā)工程師在嘗試完善硬件和程序的過程中,可能會(huì)發(fā)生錯(cuò)誤。比如:電源不穩(wěn)定,內(nèi)存堆棧溢出或程序陷入永久循環(huán)是單片機(jī)停滯
    發(fā)表于 09-25 13:46

    Sitara AM6442 RTI看門狗調(diào)試

    電子發(fā)燒友網(wǎng)站提供《Sitara AM6442 RTI看門狗調(diào)試.pdf》資料免費(fèi)下載
    發(fā)表于 08-27 11:26 ?0次下載
    Sitara AM6442 RTI<b class='flag-5'>看門狗</b>調(diào)試

    【GD32F470紫藤派開發(fā)板使用手冊(cè)】第七講 FWDG-看門狗實(shí)驗(yàn)

    通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: 獨(dú)立看門狗的原理 獨(dú)立看門狗功能介紹 實(shí)現(xiàn)獨(dú)立看門狗功能
    的頭像 發(fā)表于 05-11 10:13 ?1139次閱讀
    【GD32F470紫藤派開發(fā)板使用手冊(cè)】第七講 FWDG-<b class='flag-5'>看門狗</b>實(shí)驗(yàn)

    【GD32H757Z海棠派開發(fā)板使用手冊(cè)】第七講 FWDG-看門狗實(shí)驗(yàn)

    通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: 獨(dú)立看門狗的原理 獨(dú)立看門狗功能介紹 實(shí)現(xiàn)獨(dú)立看門狗功能
    的頭像 發(fā)表于 05-10 09:37 ?776次閱讀
    【GD32H757Z海棠派開發(fā)板使用手冊(cè)】第七講 FWDG-<b class='flag-5'>看門狗</b>實(shí)驗(yàn)

    freertos中,每個(gè)任務(wù)都是一個(gè)死循環(huán),那么還需要使用看門狗嗎?

    freertos中,每個(gè)任務(wù)都是一個(gè)死循環(huán),那么還需要使用看門狗嗎?該怎么使用?
    發(fā)表于 05-07 06:55

    軟件看門狗硬件看門狗的區(qū)別

    軟件看門狗硬件看門狗都是用于監(jiān)控系統(tǒng)崩潰的工具,它們的作用是在系統(tǒng)出現(xiàn)故障或異常情況時(shí)自動(dòng)恢復(fù)系統(tǒng)。 ?軟件
    的頭像 發(fā)表于 04-16 15:10 ?1088次閱讀

    TLF35584中集成的看門狗工作應(yīng)用案例

    看門狗輸入引腳 WDI 具有集成的下拉電流 IWDI 。看門狗輸入 WDI 可以在“Closed Window”內(nèi)或隨后的“Open Window”期間轉(zhuǎn)換為高電平。
    發(fā)表于 03-18 11:27 ?3883次閱讀
    TLF35584中集成的<b class='flag-5'>看門狗</b>工作應(yīng)用案例

    調(diào)試模式下如何調(diào)試看門狗?

    大家在調(diào)試GD32 MCU系統(tǒng)的時(shí)候,若開了看門狗外設(shè),是否會(huì)碰到進(jìn)入調(diào)試模式看門狗就會(huì)咬造成無法調(diào)試的問題?
    的頭像 發(fā)表于 02-23 09:30 ?1276次閱讀
    調(diào)試模式下如何調(diào)試<b class='flag-5'>看門狗</b>?

    求助,關(guān)于看門狗定時(shí)器的喂狗時(shí)間和多APP看門狗的問題求解

    參考例程,在看門狗定時(shí)器時(shí)間的配置上,我看到如下函數(shù): /* Step 3- Write match value */ #if(WDT_DEMO == WDT_INTERRUPT_DEMO
    發(fā)表于 02-21 06:50

    什么是看門狗?如何實(shí)現(xiàn)對(duì)系統(tǒng)程序的監(jiān)控?

    看門狗通過定時(shí)器計(jì)數(shù)器和相關(guān)的控制邏輯來實(shí)現(xiàn)功能。在系統(tǒng)正常運(yùn)行時(shí),定時(shí)器會(huì)以固定的時(shí)間間隔重復(fù)計(jì)數(shù),如果系統(tǒng)一切正常,那么定時(shí)器會(huì)定期被重置。
    的頭像 發(fā)表于 02-02 15:58 ?2504次閱讀

    ADUC7024的看門狗能不能在看門狗定時(shí)沒有到之前,將看門狗給關(guān)了啊?

    ADUC7024的看門狗能不能在看門狗定時(shí)沒有到之前(即沒有復(fù)位之前),將看門狗給關(guān)了?。?/div>
    發(fā)表于 01-15 08:17