專利名稱:一種多任務(wù)系統(tǒng)監(jiān)控方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別設(shè)計(jì)一種多任務(wù)系統(tǒng)監(jiān)控方法及裝置。
背景技術(shù):
看門狗(WDT,Watchdog Timer)分硬件看門狗和軟件看門狗,硬件看門狗是利用一 個(gè)定時(shí)器電路,其定時(shí)輸出連接到電路的復(fù)位端,在系統(tǒng)運(yùn)行以后也就啟動(dòng)了看門狗的計(jì) 數(shù)器,看門狗就開始自動(dòng)計(jì)數(shù),程序在定時(shí)周期對(duì)定時(shí)器清零,因此程序正常工作時(shí),定時(shí) 器總不能溢出,也就不能產(chǎn)生復(fù)位信號(hào),如果程序出現(xiàn)故障,不在定時(shí)周期內(nèi)復(fù)位看門狗, 就使得看門狗定時(shí)器溢出產(chǎn)生復(fù)位信號(hào)并重啟系統(tǒng),軟件看門狗原理上一樣,只是將硬件 電路上的定時(shí)器用處理器的內(nèi)部定時(shí)器代替,在單任務(wù)系統(tǒng)中看門狗工作原理如上所述, 容易實(shí)現(xiàn),在多任務(wù)系統(tǒng)中情況更為復(fù)雜,只要有一個(gè)任務(wù)正常工作并定期對(duì)定時(shí)器清零, 看門狗定時(shí)器就不會(huì)溢出,除非所有的任務(wù)都發(fā)生故障,才能使得看門狗定時(shí)器溢出而產(chǎn) 生復(fù)位信號(hào)并重啟系統(tǒng)?,F(xiàn)有技術(shù)中為了解決上述多任務(wù)系統(tǒng)監(jiān)控出現(xiàn)的問題,給每個(gè)任務(wù)設(shè)置一個(gè)軟件 模擬出來的看門狗計(jì)數(shù)器,然后定時(shí)查詢每一個(gè)軟件看門狗的喂狗情況,由此決定是否調(diào) 用喂狗指令,清零看門狗計(jì)數(shù)器,若發(fā)現(xiàn)有任何一個(gè)軟件看門狗溢出,則停止喂狗,讓系統(tǒng) 復(fù)位。以上技術(shù)方案,需要對(duì)每一個(gè)任務(wù)的看門狗計(jì)數(shù)器進(jìn)行判斷,才能判斷出系統(tǒng)中 所有任務(wù)的運(yùn)行情況是否正常,降低了多任務(wù)系統(tǒng)的監(jiān)控效率。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種多任務(wù)系統(tǒng)監(jiān)控方法及裝置,能夠提高多任務(wù)系統(tǒng)的監(jiān) 控效率。本發(fā)明實(shí)施例提供的多任務(wù)系統(tǒng)監(jiān)控方法包括設(shè)置任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù) 執(zhí)行標(biāo)志寄存器;置位所述任務(wù)啟動(dòng)標(biāo)志寄存器及所述任務(wù)執(zhí)行標(biāo)志寄存器,使得所述任 務(wù)啟動(dòng)標(biāo)志寄存器的初始標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的初始標(biāo)志位相同;當(dāng)執(zhí)行主 任務(wù)時(shí),獲取所述任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位及所述任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位;判 斷所述任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位是否相同,若相 同,則清零任務(wù)計(jì)數(shù)器,清零并重新置位所述任務(wù)執(zhí)行標(biāo)志寄存器,若不相同,則復(fù)位系統(tǒng)。本發(fā)明實(shí)施例提供的多任務(wù)系統(tǒng)監(jiān)控裝置包括設(shè)置單元,用于設(shè)置任務(wù)啟動(dòng)標(biāo) 志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器;置位單元,用于置位所述任務(wù)啟動(dòng)標(biāo)志寄存器及所述任 務(wù)執(zhí)行標(biāo)志寄存器,使得所述任務(wù)啟動(dòng)標(biāo)志寄存器的初始標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存 器的初始標(biāo)志位相同;獲取單元,用于當(dāng)執(zhí)行主任務(wù)時(shí),獲取所述任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo) 志位及所述任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位;判斷單元,用于判斷所述任務(wù)啟動(dòng)標(biāo)志寄存器 的標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位是否相同;清零單元,用于清零任務(wù)計(jì)數(shù)器, 以及清零任務(wù)執(zhí)行標(biāo)志寄存器;復(fù)位單元,用于復(fù)位系統(tǒng)。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn)本發(fā)明實(shí)施例中,在對(duì)多任務(wù)系統(tǒng)的監(jiān)控中,多任務(wù)系統(tǒng)中,設(shè)置任務(wù)啟動(dòng)標(biāo)志寄 存器及任務(wù)執(zhí)行標(biāo)志寄存器,在寄存器中為所有任務(wù)設(shè)置任務(wù)啟動(dòng)標(biāo)志位及任務(wù)執(zhí)行標(biāo)志 位,在任務(wù)啟動(dòng)時(shí),將任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器置相同的標(biāo)志位,當(dāng)主任 務(wù)執(zhí)行過程中,獲取啟動(dòng)標(biāo)志寄存器的標(biāo)志位與任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位,判斷二者 是否相同,若相同則清零任務(wù)計(jì)數(shù)器,清零并重新置位任務(wù)執(zhí)行標(biāo)志寄存器,若不同則復(fù)位 系統(tǒng),因而每次只需判斷一次,便可得知所有任務(wù)的運(yùn)行情況并決定是否需要復(fù)位系統(tǒng),減 少了判斷時(shí)間,提高了判斷效率。
圖1為本發(fā)明實(shí)施例中多任務(wù)系統(tǒng)監(jiān)控方法的一個(gè)實(shí)施例;圖2為本發(fā)明實(shí)施例中多任務(wù)系統(tǒng)監(jiān)控方法的另一個(gè)實(shí)施例;圖3為本發(fā)明實(shí)施例中多任務(wù)系統(tǒng)監(jiān)控裝置的一個(gè)實(shí)施例。
具體實(shí)施例方式本發(fā)明實(shí)施例提供了一種多任務(wù)系統(tǒng)監(jiān)控方法,用于提高多任務(wù)系統(tǒng)的監(jiān)控效 率,本發(fā)明還提供了一種多任務(wù)系統(tǒng)監(jiān)控裝置,以下分別進(jìn)行詳細(xì)說明。需要說明的是,本發(fā)明實(shí)施例中提供的方法及裝置,可以應(yīng)用在嵌入式操作系 統(tǒng)的看門狗監(jiān)控程序中,也可以應(yīng)用在需要看門狗定時(shí)器的所有嵌入式實(shí)時(shí)系統(tǒng)(RT0S, Real-time operating system)中,具體應(yīng)用范圍此處不作限定。請(qǐng)參閱圖1,本發(fā)明實(shí)施例中的多任務(wù)系統(tǒng)監(jiān)控方法包括101、設(shè)置任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器;本發(fā)明實(shí)施例中,在一個(gè)多任務(wù)系統(tǒng)中,設(shè)置任務(wù)啟動(dòng)標(biāo)志寄存器以及任務(wù)執(zhí)行 標(biāo)志寄存器,此兩種標(biāo)志寄存器為全局變量的標(biāo)志寄存器,優(yōu)選的,設(shè)置一個(gè)任務(wù)啟動(dòng)標(biāo)志 寄存器以及一個(gè)任務(wù)執(zhí)行標(biāo)志寄存器,最能夠節(jié)省系統(tǒng)資源,任務(wù)啟動(dòng)標(biāo)志寄存器用于暫 存單項(xiàng)任務(wù)的啟動(dòng)標(biāo)志指令,任務(wù)執(zhí)行標(biāo)志寄存器用于暫存單項(xiàng)任務(wù)的執(zhí)行指令,例如對(duì) 看門狗計(jì)數(shù)器清零的指令,即喂狗指令。需要說明的是,任務(wù)執(zhí)行標(biāo)志寄存器可以用于暫存對(duì)看門狗計(jì)數(shù)器清零的指令, 也可以是其他單項(xiàng)任務(wù)的執(zhí)行指令,暫存指令的種類與實(shí)際應(yīng)用過程有關(guān),具體此處不作 限定。102、置位任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器;當(dāng)任一單項(xiàng)任務(wù)開始運(yùn)行時(shí),置位任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器, 使得任務(wù)啟動(dòng)標(biāo)志寄存器中所有單項(xiàng)任務(wù)的初始標(biāo)志位與任務(wù)執(zhí)行標(biāo)志寄存器的所有單 項(xiàng)任務(wù)的初始標(biāo)志位相同,例如,將任務(wù)啟動(dòng)標(biāo)志寄存器中所有單項(xiàng)任務(wù)的初始標(biāo)志位設(shè) 置為1,則任務(wù)執(zhí)行標(biāo)志寄存器中所有單項(xiàng)任務(wù)的初始標(biāo)志位也設(shè)置為1,具體的置位過 程,將在后續(xù)實(shí)施例中詳細(xì)說明。103、獲取任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位及任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位;在主任務(wù)執(zhí)行過程中,可以按預(yù)置時(shí)間定時(shí)獲取任務(wù)啟動(dòng)標(biāo)志寄存器中所有單項(xiàng) 任務(wù)的標(biāo)志位及任務(wù)執(zhí)行標(biāo)志寄存器中所有單項(xiàng)任務(wù)的標(biāo)志位,具體預(yù)置時(shí)間與實(shí)際應(yīng)用過程有關(guān),此處不作限定。104、判斷任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位與任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位是否相 同;步驟103獲取到任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位及所述任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo) 志位后,判斷任務(wù)啟動(dòng)標(biāo)志寄存器與任務(wù)執(zhí)行標(biāo)志寄器是否相同,即可判斷任務(wù)啟動(dòng)標(biāo)志 寄存器中所有單項(xiàng)任務(wù)的標(biāo)志位與任務(wù)執(zhí)行標(biāo)志寄存器中所有單項(xiàng)任務(wù)的標(biāo)志位是否相 同,若相同,則執(zhí)行步驟105,若不相同,則執(zhí)行步驟106。例如,若任務(wù)啟動(dòng)標(biāo)志寄存器中所有單項(xiàng)任務(wù)的標(biāo)志位為1,而任務(wù)執(zhí)行標(biāo)志寄存 器中所有單項(xiàng)任務(wù)的標(biāo)志位也為1,那么判斷結(jié)果是系統(tǒng)中的任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志 位與任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位相同,進(jìn)而執(zhí)行步驟105,若任務(wù)啟動(dòng)標(biāo)志寄存器中所有 單項(xiàng)任務(wù)的標(biāo)志位為1,而任務(wù)執(zhí)行標(biāo)志寄存器中有一個(gè)或幾個(gè)單項(xiàng)任務(wù)的標(biāo)志位為0,那 么判斷結(jié)果是任務(wù)啟動(dòng)標(biāo)志寄存器中單項(xiàng)任務(wù)的標(biāo)志位與任務(wù)執(zhí)行標(biāo)志寄存器中單項(xiàng)任 務(wù)的標(biāo)志位不同,進(jìn)而執(zhí)行步驟106。105、清零任務(wù)計(jì)數(shù)器,清零并重新置位任務(wù)執(zhí)行標(biāo)志寄存器;若步驟104中的判斷結(jié)果是,任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位與任務(wù)執(zhí)行標(biāo)志寄存 器的標(biāo)志位相同,則認(rèn)為系統(tǒng)各單項(xiàng)任務(wù)運(yùn)行正常,可以對(duì)任務(wù)的看門狗計(jì)數(shù)器進(jìn)行清零, 并清零各單項(xiàng)任務(wù)的任務(wù)執(zhí)行標(biāo)志寄存器,然后重新對(duì)單項(xiàng)任務(wù)的任務(wù)執(zhí)行標(biāo)志寄存器進(jìn) 行置位,使得單項(xiàng)任務(wù)的任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位與任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位相 同。106、復(fù)位系統(tǒng)。若步驟104中的判斷結(jié)果是,一個(gè)或幾個(gè)單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志 位與任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位不同,則認(rèn)為系統(tǒng)出現(xiàn)了故障,對(duì)系統(tǒng)進(jìn)行復(fù)位,重啟系 統(tǒng)。本發(fā)明實(shí)施例中,在對(duì)多任務(wù)系統(tǒng)進(jìn)行監(jiān)控時(shí),設(shè)置任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù) 執(zhí)行標(biāo)志寄存器,在寄存器中為所有任務(wù)設(shè)置任務(wù)啟動(dòng)標(biāo)志位及任務(wù)執(zhí)行標(biāo)志位,在任務(wù) 啟動(dòng)時(shí),將任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器置相同的標(biāo)志位,當(dāng)主任務(wù)執(zhí)行過 程中,獲取啟動(dòng)標(biāo)志寄存器的標(biāo)志位與任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位,判斷二者是否相同, 若相同則清零任務(wù)計(jì)數(shù)器,清零并重新置位任務(wù)執(zhí)行標(biāo)志寄存器,若不同則復(fù)位系統(tǒng),因而 每次只需判斷一次,便可得知所有任務(wù)的運(yùn)行情況并決定是否需要復(fù)位系統(tǒng),減少了判斷 時(shí)間,提高了判斷效率。。下面請(qǐng)參照?qǐng)D2,本發(fā)明實(shí)施例中多任務(wù)系統(tǒng)監(jiān)控方法的另一個(gè)實(shí)施例包括201、設(shè)置任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器;本發(fā)明實(shí)施例中,步驟201的內(nèi)容與前述圖1所示步驟101的內(nèi)容相同,此處不再贅述。202、根據(jù)任務(wù)優(yōu)先級(jí)置位啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器;單項(xiàng)任務(wù)啟動(dòng)時(shí),在單項(xiàng)任務(wù)優(yōu)先級(jí)對(duì)應(yīng)的位置上置位任務(wù)啟動(dòng)標(biāo)志寄存器及任 務(wù)執(zhí)行標(biāo)志寄存器,使得任務(wù)啟動(dòng)標(biāo)志寄存器的初始標(biāo)志位與任務(wù)執(zhí)行標(biāo)記寄存器的初始 標(biāo)志位相同。具體的,各單項(xiàng)任務(wù)有各自的優(yōu)先級(jí),假設(shè)系統(tǒng)中有6項(xiàng)任務(wù),任務(wù)1的優(yōu)先級(jí)為1,任務(wù)2的優(yōu)先級(jí)為2,以此類推,任務(wù)6的優(yōu)先級(jí)為6,那么根據(jù)各自的優(yōu)先級(jí),該6項(xiàng)任 務(wù)的執(zhí)行順序?yàn)樽钕葓?zhí)行任務(wù)1,然后執(zhí)行任務(wù)2,以此類推,最后執(zhí)行任務(wù)6。進(jìn)一步的,在任務(wù)啟動(dòng)標(biāo)志寄存器中有多個(gè)位置可以用來設(shè)置各單項(xiàng)任務(wù)的標(biāo)志 位,在任務(wù)執(zhí)行標(biāo)志寄存器中也有多個(gè)位置可以用來設(shè)置各單項(xiàng)任務(wù)的標(biāo)志位,假設(shè)對(duì)任 務(wù)5的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行置位,當(dāng)任務(wù)5啟動(dòng)時(shí),置位任務(wù)啟 動(dòng)標(biāo)志寄存器中對(duì)應(yīng)任務(wù)5的標(biāo)志位,即設(shè)置任務(wù)啟動(dòng)標(biāo)志寄存器的第5位標(biāo)志位為1,那 么將任務(wù)執(zhí)行標(biāo)志寄存器的第5位的標(biāo)志位也設(shè)置為1,使得任務(wù)啟動(dòng)標(biāo)志寄存器與任務(wù) 執(zhí)行標(biāo)志寄存器的置位相同,可以理解的,在后續(xù)的對(duì)標(biāo)志寄存器清零時(shí)也是對(duì)寄存器的 第5位進(jìn)行清零。需要說明的是,如果單項(xiàng)任務(wù)的優(yōu)先級(jí)比較高,當(dāng)優(yōu)先級(jí)數(shù)高出了標(biāo)志寄存器位 數(shù)的限制或其他不適合的情況,則可以根據(jù)具體情況進(jìn)行相應(yīng)調(diào)整。203 206,與前述圖1所示實(shí)施例中的步驟103至106內(nèi)容相同,此處不再贅述。207、根據(jù)預(yù)置時(shí)間定時(shí)置位任務(wù)執(zhí)行標(biāo)志寄存器;具體的,首先預(yù)置置位的時(shí)間,每次到達(dá)預(yù)置時(shí)間,對(duì)單項(xiàng)任務(wù)中的任務(wù)執(zhí)行標(biāo)志 寄存器進(jìn)行清零,并對(duì)任務(wù)執(zhí)行標(biāo)志寄存器重新置位,以保證任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志 位與單項(xiàng)任務(wù)中啟動(dòng)標(biāo)志寄存器的標(biāo)志位相同。需要說明的是,預(yù)置的置位時(shí)間可以任意設(shè)置,但須保證在主任務(wù)的一個(gè)循環(huán)時(shí) 長(zhǎng)內(nèi)有足夠的時(shí)間使所有單項(xiàng)任務(wù)完成置位,否則,若預(yù)置時(shí)間太短,則當(dāng)主任務(wù)再次進(jìn)行 判斷時(shí),單項(xiàng)任務(wù)尚未置位任務(wù)執(zhí)行標(biāo)志寄存器,導(dǎo)致主任務(wù)對(duì)單項(xiàng)任務(wù)的兩種寄存器標(biāo) 志位判斷的結(jié)果出錯(cuò)。例如,假設(shè)系統(tǒng)中有6個(gè)單項(xiàng)任務(wù),每個(gè)單項(xiàng)任務(wù)的定時(shí)置位時(shí)間為0. 5秒,主任 務(wù)一次循環(huán)時(shí)間為1. 5秒,則在主任務(wù)的一次循環(huán)過程中,每個(gè)單項(xiàng)任務(wù)至少能夠?qū)θ蝿?wù) 執(zhí)行標(biāo)志寄存器進(jìn)行兩次置位,保證任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位與單項(xiàng)任務(wù)中啟動(dòng)標(biāo)志 寄存器的標(biāo)志位相同。需要進(jìn)一步說明的是,預(yù)置的置位時(shí)間也不可以太短,過于頻繁的置位會(huì)造成系 統(tǒng)資源的浪費(fèi)。208、清零或者不對(duì)任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行置位;當(dāng)某個(gè)單項(xiàng)任務(wù)不能作看門狗監(jiān)控時(shí),需要禁止對(duì)該單項(xiàng)任務(wù)進(jìn)行看門狗監(jiān)控 時(shí),那么如果該單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器尚未置位,則不對(duì) 該任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行置位,如果已經(jīng)對(duì)該單項(xiàng)任務(wù)的任務(wù)啟 動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器置位,則將任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存 器進(jìn)行清零。需要說明的是,禁止該單項(xiàng)任務(wù)進(jìn)行看門狗監(jiān)控可以是暫時(shí)的,后續(xù)可以恢復(fù)看 門狗功能,也可以是永久的,終止看門狗功能,具體的禁止方式與實(shí)際應(yīng)用有關(guān),此處不作 限定。209、查詢發(fā)生故障的單項(xiàng)任務(wù)并對(duì)該單項(xiàng)任務(wù)進(jìn)行處理。當(dāng)系統(tǒng)中有單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器與該單項(xiàng)任務(wù)的任務(wù)執(zhí)行標(biāo)志寄存 器的標(biāo)志位不同時(shí),可查詢到發(fā)生故障的該單項(xiàng)任務(wù),并對(duì)該單項(xiàng)任務(wù)進(jìn)行相應(yīng)的處理,如 查找故障原因或重啟該單項(xiàng)任務(wù)。
7
需要說明的是,查詢發(fā)生故障的單項(xiàng)任務(wù)的具體方式,可由現(xiàn)有技術(shù)實(shí)現(xiàn),具體此 處不作限定。本發(fā)明實(shí)施例中,根據(jù)任務(wù)優(yōu)先級(jí)置位啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器, 能夠減少寄存器設(shè)置,節(jié)約系統(tǒng)資源,根據(jù)預(yù)置時(shí)間定時(shí)置位任務(wù)執(zhí)行標(biāo)志寄存器,并對(duì)任 務(wù)執(zhí)行標(biāo)志寄存器重新置位,保證在主任務(wù)再次進(jìn)行判斷時(shí),對(duì)單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志 寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行正確判斷,且不會(huì)因頻繁置位而造成系統(tǒng)資源的浪費(fèi), 當(dāng)某個(gè)單項(xiàng)任務(wù)計(jì)數(shù)器不能作看門狗而對(duì)系統(tǒng)進(jìn)行監(jiān)控時(shí),暫時(shí)或永久禁止該單項(xiàng)任務(wù)進(jìn) 行看門狗監(jiān)控,不會(huì)影響系統(tǒng)其他部分的運(yùn)行。下面對(duì)本發(fā)明實(shí)施例中的多任務(wù)系統(tǒng)監(jiān)控裝置進(jìn)行描述,請(qǐng)參閱圖3,本發(fā)明實(shí)施 例中的多任務(wù)系統(tǒng)監(jiān)控裝置包括設(shè)置單元301,用于設(shè)置任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器;置位單元302,用于置位任務(wù)執(zhí)行標(biāo)志寄存器,使得任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位 與任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位相同;獲取單元303,用于當(dāng)執(zhí)行主任務(wù)時(shí),獲取任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位及任務(wù)執(zhí) 行標(biāo)志寄存器的標(biāo)志位;判斷單元304,用于判斷任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位與任務(wù)執(zhí)行標(biāo)志寄存器的 標(biāo)志位是否相同;清零單元305,用于清零任務(wù)計(jì)數(shù)器及任務(wù)執(zhí)行標(biāo)志寄存器,以及用于若需要禁止 對(duì)單項(xiàng)任務(wù)計(jì)數(shù)器進(jìn)行清零,則當(dāng)已對(duì)單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄 存器置位時(shí),將單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行清零;復(fù)位單元306,用于復(fù)位系統(tǒng)。本實(shí)施例中,多任務(wù)系統(tǒng)監(jiān)控裝置還可以包括查詢單元307,用于查詢發(fā)生故障的單項(xiàng)任務(wù);處理單元308,用于對(duì)發(fā)生故障的單項(xiàng)任務(wù)進(jìn)行處理。為便于理解,下面以一具體應(yīng)用場(chǎng)景對(duì)本實(shí)施例中多任務(wù)系統(tǒng)監(jiān)控裝置的各單元 之間的聯(lián)系進(jìn)行說明首先,設(shè)置單元301在多任務(wù)系統(tǒng)中設(shè)置全局變量的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù) 執(zhí)行標(biāo)志寄存器,置位單元302對(duì)任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行置位, 使得任務(wù)啟動(dòng)標(biāo)志寄存器的初始標(biāo)志位與任務(wù)執(zhí)行標(biāo)志寄存器的初始標(biāo)志位相同,置位單 元302可以根據(jù)各任務(wù)優(yōu)先級(jí)對(duì)任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器置位。需要說明的是,置位單元302所執(zhí)行的具體置位功能可以與前述圖2所示的實(shí)施 例中的步驟202的內(nèi)容相同,此處不再贅述。當(dāng)主任務(wù)開始執(zhí)行時(shí),獲取單元303定時(shí)獲取任務(wù)中任務(wù)啟動(dòng)標(biāo)志寄存器中所有 單項(xiàng)任務(wù)的標(biāo)志位及任務(wù)執(zhí)行標(biāo)志寄存器中所有單項(xiàng)任務(wù)的標(biāo)志位,判斷單元304判斷此 兩種標(biāo)志位是否相同,若標(biāo)志位相同,則認(rèn)為系統(tǒng)各單項(xiàng)任務(wù)運(yùn)行正常,清零單元305對(duì)看 門狗計(jì)數(shù)器進(jìn)行清零,并清零任務(wù)執(zhí)行標(biāo)志寄存器,由置位單元302重新對(duì)任務(wù)執(zhí)行標(biāo)志 寄存器進(jìn)行置位,若標(biāo)志位不同,則認(rèn)為系統(tǒng)出現(xiàn)了故障,復(fù)位單元306對(duì)系統(tǒng)進(jìn)行復(fù)位, 重啟系統(tǒng)。在各單項(xiàng)任務(wù)中,需要重新置位出現(xiàn)故障的單項(xiàng)任務(wù)的任務(wù)執(zhí)行標(biāo)志寄存器,否則當(dāng)主任務(wù)再次進(jìn)行判斷時(shí),單項(xiàng)任務(wù)尚未置位任務(wù)執(zhí)行標(biāo)志寄存器,導(dǎo)致主任務(wù)對(duì)單項(xiàng) 任務(wù)的兩種寄存器標(biāo)志位判斷的結(jié)果出錯(cuò),首先,預(yù)置置位時(shí)間,在各單項(xiàng)任務(wù)中,每次到 達(dá)預(yù)置的置位時(shí)間,清零單元305對(duì)單項(xiàng)任務(wù)中的任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行清零,并由置 位單元302對(duì)該任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行重新置位,以保證任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位 與該單項(xiàng)任務(wù)中啟動(dòng)標(biāo)志寄存器的標(biāo)志位相同。需要說明的是,預(yù)置的置位時(shí)間可以任意設(shè)置,但須保證在主任務(wù)的一個(gè)循環(huán)時(shí) 長(zhǎng)內(nèi)有足夠的時(shí)間使所有單項(xiàng)任務(wù)完成置位,否則,若預(yù)置時(shí)間太短,則當(dāng)主任務(wù)再次對(duì)單 項(xiàng)任務(wù)判斷時(shí),單項(xiàng)任務(wù)尚未置位任務(wù)執(zhí)行標(biāo)志寄存器,導(dǎo)致主任務(wù)對(duì)單項(xiàng)任務(wù)的兩種寄 存器標(biāo)志位判斷的結(jié)果出錯(cuò),而預(yù)置的置位時(shí)間也不可以太短,過于頻繁的置位會(huì)造成系 統(tǒng)資源的浪費(fèi)。特殊情況下,當(dāng)某個(gè)單項(xiàng)任務(wù)計(jì)數(shù)器不能作看門狗而對(duì)系統(tǒng)進(jìn)行監(jiān)控時(shí),需要禁 止對(duì)該單項(xiàng)任務(wù)進(jìn)行看門狗監(jiān)控時(shí),那么如果該單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí) 行標(biāo)志寄存器尚未置位,則不對(duì)該任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行置位, 如果已經(jīng)對(duì)該單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器置位,則清零單元 305將任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行清零。需要說明的是,禁止該單項(xiàng)任務(wù)進(jìn)行看門狗監(jiān)控可以是暫時(shí)的,后續(xù)可以恢復(fù)看 門狗功能,也可以是永久的,終止看門狗功能,具體的禁止方式與實(shí)際應(yīng)用有關(guān),此處不作 限定。當(dāng)復(fù)位單元306對(duì)系統(tǒng)進(jìn)行復(fù)位后,查詢單元307可查詢到發(fā)生故障的該單項(xiàng)任 務(wù),并由處理單元308對(duì)該單項(xiàng)任務(wù)進(jìn)行相應(yīng)的處理,如查找故障原因或重啟該單項(xiàng)任務(wù)。需要說明的是,查詢發(fā)生故障的單項(xiàng)任務(wù)的具體方式,可由現(xiàn)有技術(shù)實(shí)現(xiàn),具體此 處不作限定。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以 通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上 述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。以上對(duì)本發(fā)明所提供的一種多任務(wù)系統(tǒng)監(jiān)控方法及裝置進(jìn)行了詳細(xì)介紹,對(duì)于本 領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實(shí)施例的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改 變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
9
權(quán)利要求
一種多任務(wù)系統(tǒng)監(jiān)控方法,其特征在于,包括設(shè)置任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器;置位所述任務(wù)啟動(dòng)標(biāo)志寄存器及所述任務(wù)執(zhí)行標(biāo)志寄存器,使得所述任務(wù)啟動(dòng)標(biāo)志寄存器的初始標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的初始標(biāo)志位相同;當(dāng)執(zhí)行主任務(wù)時(shí),獲取所述任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位及所述任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位;判斷所述任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位是否相同,若相同,則清零任務(wù)計(jì)數(shù)器,清零并重新置位所述任務(wù)執(zhí)行標(biāo)志寄存器,若不相同,則復(fù)位系統(tǒng)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述置位啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo) 志寄存器,使得所述任務(wù)啟動(dòng)標(biāo)志寄存器的初始標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的初始 標(biāo)志位相同包括在單項(xiàng)任務(wù)優(yōu)先級(jí)對(duì)應(yīng)的位置上對(duì)所述任務(wù)啟動(dòng)標(biāo)志寄存器及所述任務(wù)執(zhí)行標(biāo)志寄 存器進(jìn)行置位,使得所述任務(wù)啟動(dòng)標(biāo)志寄存器的初始標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的 初始標(biāo)志位相同。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷所述任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo) 志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位是否相同,若相同,則清零任務(wù)計(jì)數(shù)器,清零并重 新置位所述任務(wù)執(zhí)行標(biāo)志寄存器,若不相同,則復(fù)位系統(tǒng)之后包括根據(jù)預(yù)置時(shí)間定時(shí)置位所述任務(wù)執(zhí)行標(biāo)志寄存器,使得所述任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo) 志位與所述任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位相同。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,若需要禁止對(duì)單項(xiàng)任務(wù)計(jì) 數(shù)器進(jìn)行清零,則當(dāng)所述單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器尚未置位 時(shí),不對(duì)所述單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行置位;或者,當(dāng)已對(duì)所述單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器置位時(shí),將所述單 項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行清零。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位 與任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位是否相同,若相同,則清零任務(wù)計(jì)數(shù)器,清零并重新置位所 述任務(wù)執(zhí)行標(biāo)志寄存器,若不相同,則復(fù)位系統(tǒng)之后包括查詢發(fā)生故障的單項(xiàng)任務(wù),對(duì)所述發(fā)生故障的單項(xiàng)任務(wù)進(jìn)行處理。
6.一種多任務(wù)系統(tǒng)監(jiān)控裝置,其特征在于,包括設(shè)置單元,用于設(shè)置任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器;置位單元,用于置位所述任務(wù)啟動(dòng)標(biāo)志寄存器及所述任務(wù)執(zhí)行標(biāo)志寄存器,使得所述 任務(wù)啟動(dòng)標(biāo)志寄存器的初始標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的初始標(biāo)志位相同;獲取單元,用于當(dāng)執(zhí)行主任務(wù)時(shí),獲取所述任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位及所述任務(wù) 執(zhí)行標(biāo)志寄存器的標(biāo)志位;判斷單元,用于判斷所述任務(wù)啟動(dòng)標(biāo)志寄存器的標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的 標(biāo)志位是否相同;清零單元,用于清零任務(wù)計(jì)數(shù)器,以及清零任務(wù)執(zhí)行標(biāo)志寄存器;復(fù)位單元,用于復(fù)位系統(tǒng)。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述置位單元,還用于在單項(xiàng)任務(wù)優(yōu)先級(jí) 對(duì)應(yīng)的位置上對(duì)所述任務(wù)啟動(dòng)標(biāo)志寄存器及所述任務(wù)執(zhí)行標(biāo)志寄存器進(jìn)行置位,使得所述 任務(wù)啟動(dòng)標(biāo)志寄存器的初始標(biāo)志位與所述任務(wù)執(zhí)行標(biāo)志寄存器的初始標(biāo)志位相同。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述置位單元,還用于根據(jù)預(yù)置時(shí)間定時(shí) 置位所述任務(wù)執(zhí)行標(biāo)志寄存器,使得所述任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位與所述任務(wù)啟動(dòng)標(biāo) 志寄存器的標(biāo)志位相同。
9.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的裝置,其特征在于,所述清零單元,還用于若需 要禁止對(duì)單項(xiàng)任務(wù)計(jì)數(shù)器進(jìn)行清零,則當(dāng)已對(duì)所述單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù) 執(zhí)行標(biāo)志寄存器置位時(shí),將所述單項(xiàng)任務(wù)的任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器進(jìn) 行清零。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述多任務(wù)系統(tǒng)監(jiān)控裝置還包括查詢單元,用于查詢發(fā)生故障的單項(xiàng)任務(wù);處理單元,用于對(duì)所述發(fā)生故障的單項(xiàng)任務(wù)進(jìn)行處理。
全文摘要
本發(fā)明實(shí)施例公開了一種多任務(wù)系統(tǒng)監(jiān)控方法及裝置,用于提高多任務(wù)系統(tǒng)的監(jiān)控效率。本發(fā)明實(shí)施例方法包括設(shè)置任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器,在寄存器中為所有任務(wù)設(shè)置任務(wù)啟動(dòng)標(biāo)志位及任務(wù)執(zhí)行標(biāo)志位,任務(wù)啟動(dòng)時(shí),將任務(wù)啟動(dòng)標(biāo)志寄存器及任務(wù)執(zhí)行標(biāo)志寄存器置相同的標(biāo)志位,主任務(wù)執(zhí)行過程中,獲取啟動(dòng)標(biāo)志寄存器的標(biāo)志位與任務(wù)執(zhí)行標(biāo)志寄存器的標(biāo)志位,判斷二者是否相同,若相同則清零任務(wù)計(jì)數(shù)器,同時(shí)清零并重置任務(wù)執(zhí)行標(biāo)志寄存器,若不同則復(fù)位系統(tǒng),因而每次只需判斷一次,便可得知所有任務(wù)的運(yùn)行情況并決定是否需要復(fù)位系統(tǒng),提高了判斷效率。
文檔編號(hào)G06F11/30GK101944056SQ20101029152
公開日2011年1月12日 申請(qǐng)日期2010年9月21日 優(yōu)先權(quán)日2010年9月21日
發(fā)明者吳海, 張進(jìn)軍, 董光府, 郭彩霞 申請(qǐng)人:深圳市華力特電氣股份有限公司