一種任務(wù)超時保護(hù)方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種任務(wù)超時保護(hù)方法。
【背景技術(shù)】
[0002]嵌入式系統(tǒng)多為實時處理系統(tǒng),這就要求系統(tǒng)在規(guī)定時限要求內(nèi)及時給出響應(yīng),例如在基于圖像的目標(biāo)檢測及跟蹤系統(tǒng)中,目標(biāo)檢測及跟蹤處理任務(wù)必須滿足系統(tǒng)實時處理要求,否則將出現(xiàn)目標(biāo)檢測或跟蹤位置滯后甚至無法給出正確輸出的問題。
[0003]在嵌入式實時處理系統(tǒng)中,一些算法的處理時間是基本固定的,與采集的數(shù)據(jù)的復(fù)雜程度無關(guān),這類算法的處理時間主要與所采用的處理器的主頻有關(guān),因此在設(shè)計階段就可以保證系統(tǒng)的實時性能,但是實際的系統(tǒng)為了滿足用戶各種各樣的需求,其處理算法的時間多與輸入數(shù)據(jù)的復(fù)雜程度有關(guān),這樣當(dāng)輸入數(shù)據(jù)復(fù)雜程度偏高時,數(shù)據(jù)處理任務(wù)就可能存在超時的問題,在超時情況下,如何保證系統(tǒng)后續(xù)給出必要的有意義的輸出,并保證良好的用戶體驗,這將是軟件設(shè)計人員不得不面臨的難題。
[0004]目前,實現(xiàn)任務(wù)超時保護(hù)的方案一種是通過定時器實現(xiàn)對特定軟件模塊的監(jiān)控,這種方式在進(jìn)入軟件模塊前啟動一個定時器,在退出軟件模塊前重置該定時器,如果定時器未在指定時間內(nèi)重置(即發(fā)生超時),該定時器將產(chǎn)生一個中斷,該中斷服務(wù)程序?qū)?zhí)行相應(yīng)的任務(wù)超時保護(hù)操作;另一種是通過特定硬件電路(如看門狗)實現(xiàn)系統(tǒng)在超時狀態(tài)下的全局復(fù)位,來達(dá)到重啟系統(tǒng)的目的。前者受限于系統(tǒng)中定時器的數(shù)量,而后者雖然可以很好的實現(xiàn)正確的系統(tǒng)狀態(tài)恢復(fù),但是對于包含外設(shè)較多的嵌入式系統(tǒng),在復(fù)位后,系統(tǒng)將需要重新完成相關(guān)設(shè)備的初始化,這不但影響了系統(tǒng)的響應(yīng)時間,同時在輸入數(shù)據(jù)無變化的條件下,任務(wù)重啟后,依然會存在超時問題,這不能從根本上解決軟件超時的問題,此外該方式主要受看門狗電路控制,也不能實現(xiàn)任務(wù)超時的工作現(xiàn)場的保護(hù),這樣一些關(guān)鍵的狀態(tài)信息將不能被保存下來,不利于對超時處理原因的后續(xù)分析??梢姡F(xiàn)有的基于硬件的任務(wù)超時保護(hù)的方案存在各種弊端,不能滿足使用需求。
【發(fā)明內(nèi)容】
[0005]鑒于上述問題,提出了本發(fā)明以便提供一種解決上述問題的任務(wù)超時保護(hù)方法,該方法在軟件層面實現(xiàn)了任務(wù)的超時保護(hù)。
[0006]具體的,本發(fā)明提供的任務(wù)超時保護(hù)方法,應(yīng)用于嵌入式實時操作系統(tǒng)中,包括:
[0007]創(chuàng)建同步任務(wù)、被監(jiān)控的處理任務(wù),并為每個被監(jiān)控的處理任務(wù)創(chuàng)建對應(yīng)的監(jiān)控任務(wù);其中,所述同步任務(wù)為周期任務(wù),各所述被監(jiān)控的處理任務(wù)均維護(hù)一初始狀態(tài)為未置位的超時標(biāo)志;
[0008]在周期時間到達(dá)時,調(diào)度所述同步任務(wù),所述同步任務(wù)檢測各被監(jiān)控的處理任務(wù)的超時標(biāo)志的狀態(tài),針對每個被監(jiān)控的處理任務(wù),若其超時標(biāo)志未置位,則觸發(fā)該被監(jiān)控的處理任務(wù);否則,觸發(fā)對應(yīng)的監(jiān)控任務(wù);
[0009]所述被監(jiān)控的處理任務(wù)將其維護(hù)的超時標(biāo)志置位后執(zhí)行數(shù)據(jù)處理算法,并在數(shù)據(jù)處理算法執(zhí)行完成后,對超時標(biāo)志進(jìn)行去置位處理;
[0010]所述監(jiān)控任務(wù)對系統(tǒng)狀態(tài)數(shù)據(jù)進(jìn)行保存,并刪除其監(jiān)控的處理任務(wù)。
[0011 ] 可選地,本發(fā)明所述方法中,所述監(jiān)控任務(wù)刪除其監(jiān)控的處理任務(wù)后,還包括:調(diào)整數(shù)據(jù)處理算法,以降低算法處理時間,并基于調(diào)整后的數(shù)據(jù)處理算法重新創(chuàng)建被監(jiān)控的處理任務(wù)。
[0012]可選地,本發(fā)明所述方法中,所述同步任務(wù)的運(yùn)行周期與系統(tǒng)外部硬件中斷的周期一致。
[0013]可選地,本發(fā)明所述方法中,所述監(jiān)控任務(wù)通過對數(shù)據(jù)處理算法中影響處理時間的一個或多個閾值參數(shù)進(jìn)行調(diào)整的方式,調(diào)整數(shù)據(jù)處理算法,以降低算法處理時間。
[0014]可選地,本發(fā)明所述方法中,所述監(jiān)控任務(wù)保存的系統(tǒng)狀態(tài)數(shù)據(jù)包括:本監(jiān)控任務(wù)監(jiān)控的處理任務(wù)所運(yùn)行的數(shù)據(jù)處理算法中影響運(yùn)行時間的閾值參數(shù)。
[0015]可選地,本發(fā)明所述方法中,所述監(jiān)控任務(wù)保存的系統(tǒng)狀態(tài)數(shù)據(jù),還包括:系統(tǒng)寄存器的數(shù)據(jù)。
[0016]本發(fā)明有益效果如下:
[0017]a.不依賴于特定的定時器硬件資源;
[0018]b.不依賴于額外的硬件電路,降低了硬件成本;
[0019]c.可以保存發(fā)生超時后的關(guān)鍵狀態(tài)信息,方便后續(xù)對任務(wù)超時的原因進(jìn)行分析,為后續(xù)的處理算法優(yōu)化提供關(guān)鍵數(shù)據(jù);
[0020]d.可以根據(jù)超時狀態(tài),調(diào)整相關(guān)參數(shù),并可能從根本上解決在此狀態(tài)下任務(wù)超時的問題。
【附圖說明】
[0021]圖1為本發(fā)明實施例中同步任務(wù)的執(zhí)行流程圖;
[0022]圖2為本發(fā)明實施例中處理任務(wù)的執(zhí)行流程圖;
[0023]圖3為本發(fā)明實施例中監(jiān)控任務(wù)的執(zhí)行流程圖。
【具體實施方式】
[0024]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0025]本發(fā)明的目的是結(jié)合嵌入式實時處理系統(tǒng)中存在的任務(wù)超時問題,采用基于軟件的方式,實現(xiàn)一種任務(wù)超時保護(hù)方法。大部分嵌入式處理系統(tǒng)都滿足如下的數(shù)據(jù)流,數(shù)據(jù)采集-數(shù)據(jù)處理-數(shù)據(jù)輸出,在這種數(shù)據(jù)流驅(qū)動的系統(tǒng)中,為了提高系統(tǒng)的實時性能,多使用外部中斷事件觸發(fā)數(shù)據(jù)處理任務(wù),對于某一特定的系統(tǒng),該中斷的周期是固定的,該中斷的周期即是系統(tǒng)的實時處理時限要求,即數(shù)據(jù)處理流程應(yīng)在下次中斷到來前完成已采集數(shù)據(jù)的處理,因此本發(fā)明基于這種特點(diǎn),建立一種任務(wù)超時保護(hù)機(jī)制。
[0026]具體的,本發(fā)明提供的任務(wù)超時保護(hù)方法要求所開發(fā)的軟件基于嵌入式實時操作系統(tǒng)RT0S(Real Time Operat1n System),并且所用的嵌入式實時操作系統(tǒng)支持基于優(yōu)先級的多任務(wù)處理,具體本發(fā)明實施例所述方法包括以下步驟:
[0027]a,初始化系統(tǒng)硬件及軟件資源;
[0028]b,創(chuàng)建同步任務(wù),處理任務(wù),并為關(guān)鍵的處理任務(wù)(被監(jiān)控的處理任務(wù))分別創(chuàng)建任務(wù)超時保護(hù)監(jiān)控任務(wù);
[0029]c,進(jìn)入實時操作系統(tǒng)的任務(wù)調(diào)度器,調(diào)度器將根據(jù)操作系統(tǒng)的任務(wù)調(diào)度規(guī)則對如下三個任務(wù)進(jìn)行調(diào)度;
[0030]d,調(diào)度同步任務(wù)。對于同步任務(wù),其實現(xiàn)形式可以是硬件中斷服務(wù)程序,或者是中斷回調(diào)函數(shù),它對應(yīng)相應(yīng)的外部同步中斷,它是一個周期任務(wù),其周期依賴于外部硬件中斷的周期。進(jìn)入此任務(wù)時,表明處理數(shù)據(jù)已經(jīng)準(zhǔn)備好,它將根據(jù)超時標(biāo)志狀態(tài)觸發(fā)被監(jiān)控的處理任務(wù)或監(jiān)控任務(wù),若不超時,則觸發(fā)被監(jiān)控的處理任務(wù),進(jìn)入步驟e,若超時,則觸發(fā)監(jiān)控任務(wù),進(jìn)入步驟f,二個任務(wù)中,該任務(wù)優(yōu)先級最尚;
[0031]e,調(diào)度處理任務(wù)。對于被監(jiān)控的處理任務(wù),該任務(wù)為系統(tǒng)的核心任務(wù),如果超時標(biāo)志未設(shè)置(默認(rèn)未設(shè)置),該任務(wù)將被同步任務(wù)觸發(fā),進(jìn)入該任務(wù)后,該任務(wù)將首先設(shè)置超時標(biāo)志,然后執(zhí)行數(shù)據(jù)處理算法,數(shù)據(jù)處理算法執(zhí)行完成后,將清除超時標(biāo)志。這里,只要數(shù)據(jù)處理不發(fā)生超時現(xiàn)象,將總能執(zhí)行超時標(biāo)志清除操作,這樣監(jiān)控任務(wù)常態(tài)將處于阻塞狀態(tài),而發(fā)生超時后,該超時標(biāo)志將不能在進(jìn)入同步任務(wù)前執(zhí)行清除操作,三個任務(wù)中,該