<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 多任務(wù)系統看門(mén)狗的實(shí)現

多任務(wù)系統看門(mén)狗的實(shí)現

作者: 時(shí)間:2013-04-06 來(lái)源:網(wǎng)絡(luò ) 收藏
分硬件和軟件。硬件看門(mén)狗是利用一個(gè)定時(shí)器電路,其定時(shí)輸出連接到電路的復位端,程序在一定時(shí)間范圍內對定時(shí)器清零(俗稱(chēng)“喂狗”),因此程序正常工作時(shí),定時(shí)器總不能溢出,也就不能產(chǎn)生。

如果程序出現故障,不在定時(shí)周期內復位看門(mén)狗,就使得看門(mén)狗定時(shí)器溢出產(chǎn)生并重啟系統。軟件看門(mén)狗原理上一樣,只是將硬件電路上的定時(shí)器用處理器的內部定時(shí)器代替,這樣可以簡(jiǎn)化硬件電路設計,但在可靠性方面不如硬件定時(shí)器,比如系統內部定時(shí)器自身發(fā)生故障就無(wú)法檢測到。當然也有通過(guò)雙定時(shí)器相互監視,這不僅加大系統開(kāi)銷(xiāo),也不能解決全部問(wèn)題,比如中斷系統故障導致定時(shí)器中斷失效。

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

多任務(wù)系統看門(mén)狗的實(shí)現

圖1:(a) 看門(mén)狗示意圖
;(b) 相應的看門(mén)狗復位邏輯圖。

  在單任務(wù)系統中看門(mén)狗工作原理如上所述,容易實(shí)現。在中情況稍為復雜。假如每個(gè)任務(wù)都像單任務(wù)系統那么做,如圖1(a)所示,只要有一個(gè)任務(wù)正常工作并定期“喂狗”,看門(mén)狗定時(shí)器就不會(huì )溢出。除非所有的任務(wù)都故障,才能使得看門(mén)狗定時(shí)器溢出而復位,如圖1(b)。

  而往往我們需要的是只要有一個(gè)任務(wù)故障,系統就要求復位?;蛘哌x擇幾個(gè)關(guān)鍵的任務(wù)接受監視,只要一個(gè)任務(wù)出問(wèn)題系統就要求復位,如圖2(a)所示,相應的看門(mén)狗復位邏輯如圖2(b)所示。

  在中通過(guò)創(chuàng )建一個(gè)監視任務(wù)TaskMonitor,它的優(yōu)先級高于被監視的任務(wù)群Task1、Task2...Taskn。TaskMonitor在Task1~Taskn正常工作情況下,一定時(shí)間內對硬件看門(mén)狗定時(shí)器清零。如果被監視任務(wù)群有一個(gè)Task_x出現故障,TaskMonitor就不對看門(mén)狗定時(shí)器清零,也就達到被監視任務(wù)出現故障時(shí)系統自動(dòng)重啟的目的。另外任務(wù)TaskMonitor自身出故障時(shí),也不能及時(shí)對看門(mén)狗定時(shí)器清零,看門(mén)狗也能自動(dòng)復位重啟。接下來(lái)需要解決一個(gè)問(wèn)題是:監視任務(wù)如何有效監視被監視的任務(wù)群。

多任務(wù)系統看門(mén)狗的實(shí)現

圖2:(a) 多任務(wù)系統看門(mén)狗示意圖;(b) 正確的看門(mén)狗復位邏輯圖。

  在TaskMonitor中定義一組結構體來(lái)模擬看門(mén)狗定時(shí)器組,

  typedef STruct

  {

  UINT32 CurCnt, LastCnt;

  BOOL RunState;

  int taskID;

  } STRUCT_WATCH_DOG;


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>