專利名稱:基于嵌入式系統(tǒng)的多任務(wù)管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是嵌入式系統(tǒng)的任務(wù)調(diào)度與管理方法,具體是一種利用時(shí)鐘 中斷為基礎(chǔ)的低復(fù)雜度的嵌入式系統(tǒng)的多任務(wù)管理方法。
技術(shù)背景新世紀(jì)里,以計(jì)算機(jī)技術(shù)、通信技術(shù)和軟件技術(shù)為核心的信息技術(shù)取得了 迅猛的發(fā)展,各種裝備與設(shè)備上廣泛應(yīng)用嵌入式計(jì)算與系統(tǒng)。嵌入式系統(tǒng)被描 述為"以應(yīng)用為中心、軟件硬件可裁剪的、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、 成本、體積、功耗等嚴(yán)格綜合性要求的專用計(jì)算機(jī)系統(tǒng)",由嵌入式硬件和嵌 入式軟件兩部分組成。硬件是支撐,軟件是靈魂,幾乎所有的嵌入式產(chǎn)品中都 需要嵌入式軟件來(lái)提供靈活多樣、而且應(yīng)用特制的功能。由于嵌入式系統(tǒng)應(yīng)用 廣泛,嵌入式軟件在整個(gè)軟件產(chǎn)業(yè)中占據(jù)了重要地位,并受到世界各國(guó)的廣泛 關(guān)注;如今已成為信息產(chǎn)業(yè)中最為耀眼的"明星"之一?,F(xiàn)有的嵌入式系統(tǒng)軟件以linux和wince為主,它們的特點(diǎn)是基本具備PC 操作系統(tǒng)的所有功能,任務(wù)調(diào)度功能強(qiáng)大而完善,能夠處理復(fù)雜的任務(wù)調(diào)度。 但同時(shí)這類操作系統(tǒng)的運(yùn)行消耗巨大,對(duì)于偏低端的嵌入式系統(tǒng)而言,此類系 統(tǒng)本身就占用了巨大的系統(tǒng)資源。因而復(fù)雜度較低、能基本實(shí)現(xiàn)少量任務(wù)的實(shí) 時(shí)調(diào)度以及系統(tǒng)資源消耗小的任務(wù)管理軟件更加適合低端嵌入式系統(tǒng)。發(fā)明內(nèi)容本發(fā)明針對(duì)以上分析,提供了一種基于時(shí)鐘中斷的嵌入式系統(tǒng)的多任務(wù)管 理方法,本發(fā)明盡可能利用較少的系統(tǒng)資源完成任務(wù)的管理,以單任務(wù)的方式 調(diào)度系統(tǒng)任務(wù),并能夠?qū)崟r(shí)的完成任務(wù)處理。因而對(duì)于低端的嵌入式系統(tǒng),本 發(fā)明能夠?qū)崟r(shí)的處理任務(wù)的同時(shí)空余出較多系統(tǒng)資源,給資源消耗多的系統(tǒng)任 務(wù),進(jìn)而實(shí)現(xiàn)由低端系統(tǒng)來(lái)處理復(fù)雜的任務(wù)。本發(fā)明是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的-基于嵌入式系統(tǒng)的多任務(wù)管理方法,根據(jù)嵌入式系統(tǒng)任務(wù)處理的實(shí)時(shí)性要 求以及處理任務(wù)所需時(shí)間,將系統(tǒng)任務(wù)分為不同的優(yōu)先級(jí)任務(wù)進(jìn)行處理,最高優(yōu)先級(jí)任務(wù)為實(shí)時(shí)中斷級(jí)任務(wù),能夠?qū)崟r(shí)完成系統(tǒng)任務(wù)請(qǐng)求,所述最高優(yōu)先級(jí) 任務(wù)按照任務(wù)處理優(yōu)先級(jí)的高低分為一般中斷級(jí)任務(wù)及固定頻率的時(shí)鐘中斷級(jí) 任務(wù),其中一般中斷級(jí)任務(wù)在實(shí)時(shí)中斷級(jí)直接處理;其中固定頻率的時(shí)鐘中斷 級(jí)任務(wù)產(chǎn)生系統(tǒng)時(shí)鐘,基于此系統(tǒng)我們將一系列中斷任務(wù)構(gòu)成時(shí)鐘中斷任務(wù)鏈 表,此中斷任務(wù)鏈表為次高優(yōu)先級(jí)任務(wù)或?yàn)闀r(shí)鐘中斷級(jí)的任務(wù),按照任務(wù)處理 優(yōu)先級(jí)的高低該級(jí)任務(wù)又分為實(shí)時(shí)處理任務(wù)及延后調(diào)度處理任務(wù):對(duì)于實(shí)時(shí)處 理要求髙、復(fù)雜度低的任務(wù),我們將其作為實(shí)時(shí)處理任務(wù),在所述時(shí)鐘中斷任 務(wù)鏈表級(jí)直接處理,這屬于實(shí)時(shí)中斷級(jí)任務(wù)的處理;延后調(diào)度處理任務(wù)是處理 實(shí)時(shí)要求低、復(fù)雜度高的任務(wù),從時(shí)鐘中斷任務(wù)鏈表級(jí)調(diào)度到下級(jí)的任務(wù)査詢 鏈表級(jí)處理;所述任務(wù)査詢鏈表級(jí)任務(wù)為實(shí)時(shí)要求低的任務(wù),按照任務(wù)處理優(yōu)先級(jí)的高 低又分為高優(yōu)先級(jí)任務(wù)査詢鏈表任務(wù)及低優(yōu)先級(jí)任務(wù)査詢鏈表任務(wù),構(gòu)成雙査 詢鏈表任務(wù);從所述時(shí)鐘中斷級(jí)中調(diào)度來(lái)的任務(wù)是任務(wù)査詢鏈表中優(yōu)先級(jí)最高 的任務(wù),以保證所述時(shí)鐘中斷級(jí)中即使是優(yōu)先級(jí)最低的處理任務(wù)也能比任務(wù)查 詢鏈表級(jí)中的任務(wù)更優(yōu)先處理。所述高優(yōu)先級(jí)任務(wù)查詢鏈表的首個(gè)任務(wù)是從時(shí)鐘中斷級(jí)中調(diào)度來(lái)的待處理 中斷任務(wù)。在處理上述雙査詢鏈表任務(wù)時(shí),采取交叉循環(huán)的査詢方式,每次處理完一 個(gè)低優(yōu)先級(jí)任務(wù)查詢鏈表任務(wù)后,都會(huì)查詢是否有高優(yōu)先級(jí)任務(wù)查詢鏈表任務(wù) 等待處理,確保高優(yōu)先級(jí)任務(wù)查詢鏈表任務(wù)能夠始終被優(yōu)先査詢和處理。并且 同時(shí)提供任務(wù)加載與卸載的命令接口 。上述時(shí)鐘中斷任務(wù)鏈表的被執(zhí)行過(guò)程是,在系統(tǒng)時(shí)鐘的每個(gè)時(shí)刻檢査是否 有到時(shí)任務(wù)執(zhí)行,當(dāng)有任務(wù)需要執(zhí)行時(shí),區(qū)分是否緊急任務(wù),緊急任務(wù)立即在 所述時(shí)鐘中斷任務(wù)鏈表級(jí)直接處理,非緊急任務(wù)被調(diào)度到所述査詢鏈表優(yōu)先級(jí) 中處理。上述時(shí)鐘中斷級(jí)的任務(wù)為程序運(yùn)行中添加的定時(shí)任務(wù),所述任務(wù)查詢鏈表 級(jí)的任務(wù)為手動(dòng)命令添加的應(yīng)用任務(wù)。所述時(shí)鐘中斷級(jí)任務(wù)或任務(wù)查詢鏈表級(jí)任務(wù)都有相應(yīng)的時(shí)間片設(shè)定,高優(yōu) 先級(jí)的任務(wù)實(shí)時(shí)性高,時(shí)間片??;當(dāng)任務(wù)執(zhí)行時(shí)間大于對(duì)應(yīng)優(yōu)先級(jí)所限定的時(shí) 間片時(shí)都需要作善后處理,將剩余任務(wù)信息生成新的任務(wù)結(jié)構(gòu)體,剩余中斷任務(wù)添加到高優(yōu)先級(jí)查詢鏈表首任務(wù)除,剩余查詢?nèi)蝿?wù)添加到相應(yīng)級(jí)別的任務(wù)查 詢鏈表尾部,等待再次查詢到此任務(wù)時(shí)執(zhí)行。 上述技術(shù)方案中
所述實(shí)時(shí)中斷級(jí),是指硬件所規(guī)定的外部中斷源所產(chǎn)生的外部中斷,每 個(gè)中斷對(duì)應(yīng)相應(yīng)的中斷處理程序。
所述時(shí)鐘中斷任務(wù)鏈表,是指根據(jù)時(shí)鐘中斷產(chǎn)生的系統(tǒng)時(shí)鐘產(chǎn)生的任務(wù) 處理鏈表,鏈表的每一個(gè)節(jié)點(diǎn)對(duì)應(yīng)相應(yīng)處理函數(shù),同時(shí)也對(duì)應(yīng)處理時(shí)刻,當(dāng)系 統(tǒng)時(shí)鐘到達(dá)此時(shí)刻即處理此節(jié)點(diǎn)任務(wù)。節(jié)點(diǎn)任務(wù)分為立即處理型任務(wù)和延后處 理型任務(wù)。立即處理型任務(wù)即屬于實(shí)時(shí)中斷級(jí),而延后處理型任務(wù)即轉(zhuǎn)移到任 務(wù)查詢鏈表中處理的任務(wù)。
所述任務(wù)査詢鏈表,是指CPU不斷查詢的任務(wù)結(jié)構(gòu)體,分為高低兩個(gè)優(yōu)先 級(jí),以特定計(jì)數(shù)器變量中的比特位指示相應(yīng)的任務(wù)。當(dāng)計(jì)數(shù)器對(duì)應(yīng)標(biāo)志比特置 位時(shí)需要執(zhí)行此任務(wù),復(fù)位時(shí)說(shuō)明此任務(wù)暫無(wú)或者不需要執(zhí)行。
所述交叉循環(huán)的査詢方式,是指確保高優(yōu)先級(jí)任務(wù)査詢鏈表中的任務(wù)總 能優(yōu)先執(zhí)行的査詢方式,即每次執(zhí)行完低優(yōu)先級(jí)鏈表中的一個(gè)任務(wù)后都要査詢 一遍高優(yōu)先級(jí)鏈表,如有高優(yōu)先級(jí)任務(wù)直接執(zhí)行,將其執(zhí)行結(jié)束后才査詢低優(yōu) 先級(jí)鏈表中的下一個(gè)任務(wù)。
設(shè)置上述最高優(yōu)先級(jí)或?qū)崟r(shí)中斷級(jí)任務(wù),保證了該優(yōu)先級(jí)任務(wù)處理的最實(shí) 時(shí)性、最緊迫性;設(shè)置上述次高優(yōu)先級(jí)或時(shí)鐘中斷任務(wù)鏈表級(jí)任務(wù),可以根據(jù) 任務(wù)處理的實(shí)時(shí)性要求及復(fù)雜程度,對(duì)處理任務(wù)進(jìn)行規(guī)劃與延后調(diào)度;設(shè)置上 述任務(wù)査詢鏈表級(jí)任務(wù),可以對(duì)處理即使實(shí)時(shí)要求低的任務(wù),也采取交叉循環(huán) 的查詢方式,確保高優(yōu)先級(jí)任務(wù)的優(yōu)先處理,如此能利用時(shí)鐘中斷使嵌入式系 統(tǒng)的多任務(wù)能始終按照任務(wù)執(zhí)行緊急程度的順序進(jìn)行有條不紊的處理。
處理上述最高優(yōu)先級(jí)或?qū)崟r(shí)中斷級(jí)任務(wù),沒有執(zhí)行時(shí)間片限制,只需滿足 中斷處理的時(shí)間要求即可。其余每個(gè)優(yōu)先級(jí)都有相應(yīng)的時(shí)間片設(shè)定。
本發(fā)明的技術(shù)優(yōu)點(diǎn)在于
1、本發(fā)明能確保嵌入式多任務(wù)管理系統(tǒng)部分任務(wù)的實(shí)時(shí)性,此特點(diǎn)是嵌入 式系統(tǒng)很重要的特性,因?yàn)榍度胧较到y(tǒng)的工作能力有限,在有限的能力下實(shí)現(xiàn) 部分任務(wù)的實(shí)時(shí)性是本系統(tǒng)的重要特點(diǎn)和有益技術(shù)效果。本系統(tǒng)部分任務(wù)的實(shí) 時(shí)性主要通過(guò)中斷實(shí)現(xiàn),首先,部分任務(wù)的實(shí)時(shí)中斷能夠在中斷觸發(fā)時(shí)刻發(fā)生,其次,對(duì)于其他任務(wù)的實(shí)時(shí)性是通過(guò)中斷任務(wù)鏈表來(lái)實(shí)現(xiàn)的,因?yàn)橄到y(tǒng)時(shí)鐘是 通過(guò)固定頻率的時(shí)鐘中斷來(lái)產(chǎn)生的,而本發(fā)明中中斷任務(wù)鏈表中的任務(wù)都規(guī)定 了具體的執(zhí)行時(shí)刻,當(dāng)一個(gè)時(shí)鐘中斷任務(wù)對(duì)應(yīng)的系統(tǒng)時(shí)鐘時(shí)刻到來(lái)時(shí),不需要 進(jìn)行任何任務(wù)調(diào)動(dòng),此時(shí)鐘中斷任務(wù)便會(huì)立即執(zhí)行。當(dāng)然這種實(shí)時(shí)性的代價(jià)是 部分其他任務(wù)的非實(shí)時(shí)性,即本發(fā)明中的時(shí)鐘中斷任務(wù)的實(shí)時(shí)性,查詢鏈表中 任務(wù)的非實(shí)時(shí)性,因?yàn)闀r(shí)鐘中斷任務(wù)會(huì)以中斷形式打斷査詢鏈表中的任務(wù)而強(qiáng) 制執(zhí)行。
2、 本發(fā)明節(jié)省系統(tǒng)資源。因?yàn)橄到y(tǒng)中多個(gè)任務(wù)都需要擁有自己的系統(tǒng)資源, 任務(wù)較多時(shí)候系統(tǒng)資源消耗較大,比如內(nèi)存等等。以內(nèi)存為例,嵌入式系統(tǒng)一 般內(nèi)存資源有限,應(yīng)用原則是利用較少內(nèi)存資源完成任務(wù)。本發(fā)明中中斷任務(wù) 處理是打斷查詢?nèi)蝿?wù)處理來(lái)執(zhí)行的,所以查詢?nèi)蝿?wù)和中斷任務(wù)的內(nèi)存使用都一 直存在,但是本系統(tǒng)大部分任務(wù)是以査詢?nèi)蝿?wù)來(lái)實(shí)現(xiàn)的,查詢?nèi)蝿?wù)是以任務(wù)為 單位輪流執(zhí)行的,每個(gè)被執(zhí)行任務(wù)發(fā)生時(shí)分配內(nèi)存,發(fā)生完畢釋放內(nèi)存,因此 內(nèi)存資源被不停重復(fù)利用,利用率較高。
3、 本發(fā)明的任務(wù)管理消耗低,簡(jiǎn)單明了。嵌入式系統(tǒng)的功能一般都比較固 定,所以需要執(zhí)行的任務(wù)數(shù)目一般有限而且明確,因而可以將任務(wù)事先安排好 優(yōu)先級(jí),然后以可重入的方式改編應(yīng)用程序,使得每次程序運(yùn)行都小于此優(yōu)先 級(jí)的時(shí)間片,依照此原理便實(shí)現(xiàn)了査詢方式的任務(wù)被動(dòng)調(diào)度。
圖1為本發(fā)明方法中任務(wù)結(jié)構(gòu)體的示意圖2為本發(fā)明方法中時(shí)鐘中斷任務(wù)鏈表任務(wù)處理與任務(wù)查詢鏈表任務(wù)處理 的關(guān)系圖3為發(fā)明方法中時(shí)鐘中斷任務(wù)鏈表任務(wù)處理的流程圖; 圖4為發(fā)明方法中任務(wù)查詢鏈表任務(wù)處理的流程圖。
具體實(shí)施例方式
下面結(jié)合附圖進(jìn)一步對(duì)本發(fā)明及具體實(shí)施方式
作詳細(xì)說(shuō)明。 本發(fā)明為基于嵌入式系統(tǒng)的多任務(wù)管理方法,具體實(shí)施步驟如下 (一)、嵌入式多任務(wù)管理系統(tǒng)的初始化 嵌入式多任務(wù)管理系統(tǒng)的初始化過(guò)程是在硬件初始化完成之后進(jìn)行的,系 統(tǒng)初始化將所有任務(wù)信息收集并實(shí)現(xiàn)任務(wù)結(jié)構(gòu)體的實(shí)現(xiàn),其步驟為1) 禁止中斷將硬件中斷源關(guān)閉,防止在初始化嵌入式多任務(wù)管理系統(tǒng)過(guò) 程中產(chǎn)生中斷不能正確處理。
2) 初始化時(shí)鐘中斷任務(wù)鏈表將系統(tǒng)所定義的所有中斷任務(wù)收集起來(lái)以鏈 表形式實(shí)現(xiàn),鏈表的單元是任務(wù)結(jié)構(gòu)體。
3) 初始化任務(wù)査詢鏈表將系統(tǒng)所定義的所有査詢?nèi)蝿?wù)收集起來(lái)以鏈表形 式實(shí)現(xiàn),鏈表的單元是任務(wù)結(jié)構(gòu)體。
4) 查詢內(nèi)存任務(wù)加載區(qū),將程序中以宏標(biāo)記為任務(wù)的結(jié)構(gòu)體取出,根據(jù)任 務(wù)編號(hào)(ID)信息填入任務(wù)査詢鏈表相應(yīng)位置;
5) 如果任務(wù)編號(hào)(ID)顯示此任務(wù)為開機(jī)立即執(zhí)行任務(wù),立即執(zhí)行初始化函 數(shù),此后將任務(wù)標(biāo)記位置位,即開啟此任務(wù)的執(zhí)行。
6) 此后進(jìn)入任務(wù)交互模式,用戶交互程序?yàn)橐粋€(gè)高優(yōu)先級(jí)任務(wù)查詢,在初
始化過(guò)程中被啟動(dòng),通過(guò)此交互程序可以實(shí)現(xiàn)任務(wù)的交互更改,系統(tǒng)不停的循 環(huán)在任務(wù)査詢鏈表,實(shí)時(shí)中斷和時(shí)鐘中斷根據(jù)需求隨時(shí)可以發(fā)生,充分保證了 實(shí)時(shí)性。
上述初始化過(guò)程中的任務(wù)結(jié)構(gòu)體是本發(fā)明中用以管理任務(wù)信息的,圖1為 發(fā)明方法中任務(wù)結(jié)構(gòu)體的示意圖。見圖1,該任務(wù)結(jié)構(gòu)體的組成包括任務(wù)編號(hào)
(ID)l,任務(wù)初始化函數(shù)指針2指向初始化函數(shù)Funcinit6,任務(wù)處理函數(shù)指針 3指向處理函數(shù)Func handle7,任務(wù)加載函數(shù)指針4指向加載函數(shù)Func 1oad8, 任務(wù)釋放函數(shù)指針5指向釋放函數(shù)Func release9等等,每一個(gè)生成任務(wù)都有 一個(gè)如此的任務(wù)結(jié)構(gòu)體進(jìn)行管理。
(二)、實(shí)時(shí)中斷級(jí)任務(wù)的處理 本發(fā)明方法根據(jù)嵌入式系統(tǒng)任務(wù)處理的實(shí)時(shí)性要求以及處理任務(wù)所需時(shí) 間,將系統(tǒng)任務(wù)分為不同的優(yōu)先級(jí)任務(wù)進(jìn)行處理,最高優(yōu)先級(jí)任務(wù)為實(shí)時(shí)中斷 級(jí)任務(wù),能夠?qū)崟r(shí)完成系統(tǒng)任務(wù)請(qǐng)求,最高優(yōu)先級(jí)任務(wù)按照任務(wù)處理優(yōu)先級(jí)的 高低分為一般中斷級(jí)任務(wù)及固定頻率的時(shí)鐘中斷級(jí)任務(wù),其中一般中斷級(jí)任務(wù) 在實(shí)時(shí)中斷級(jí)直接處理。所述實(shí)時(shí)中斷即為系統(tǒng)硬件支持的硬件中斷,例如外 部端口中斷,DMA (直接內(nèi)存訪問(wèn))數(shù)據(jù)傳輸中斷,時(shí)鐘中斷等等,其中的時(shí)鐘 中斷為本發(fā)明中較為特殊的中斷,其為固定頻率的時(shí)鐘中斷級(jí)任務(wù),其根據(jù)硬 件設(shè)置,硬件時(shí)鐘可以在固定計(jì)時(shí)后產(chǎn)生中斷,據(jù)此原理產(chǎn)生一個(gè)固定頻率的 時(shí)鐘中斷,此中斷的累計(jì)便可以產(chǎn)生系統(tǒng)時(shí)鐘,此為后面時(shí)鐘中斷任務(wù)處理的基礎(chǔ)o
實(shí)時(shí)中斷處理主要保證實(shí)時(shí)性要求,利用硬件中斷資源能夠?qū)崿F(xiàn)快速處理, 不論系統(tǒng)運(yùn)行在任何任務(wù)級(jí)別都可以被實(shí)時(shí)中斷打斷,來(lái)處理實(shí)時(shí)中斷任務(wù),
實(shí)時(shí)中斷任務(wù)處理的步驟為
1) 關(guān)閉中斷;
2) 保存現(xiàn)場(chǎng);
3) 跳轉(zhuǎn)到中斷執(zhí)行函數(shù);
4) 恢復(fù)現(xiàn)場(chǎng)并打開中斷;
5) 恢復(fù)中斷前的任務(wù)的處理。 (三)時(shí)鐘中斷任務(wù)的處理
如前所述,固定頻率的時(shí)鐘中斷級(jí)任務(wù)產(chǎn)生系統(tǒng)時(shí)鐘,基于此系統(tǒng)時(shí)鐘對(duì) 待處理的任務(wù)構(gòu)成時(shí)鐘中斷任務(wù)鏈表,作為次高優(yōu)先級(jí)任務(wù)或?yàn)闀r(shí)鐘中斷鏈表 級(jí)任務(wù)。
時(shí)鐘中斷鏈表級(jí)任務(wù)處理的特征是能夠比較實(shí)時(shí)的完成系統(tǒng)所需要的任務(wù) 處理,嵌入式系統(tǒng)的應(yīng)用場(chǎng)合一般會(huì)有一定的實(shí)時(shí)性需求,比如測(cè)控系統(tǒng)在事 件發(fā)生的時(shí)刻必須立即做出響應(yīng),音視頻系統(tǒng)在正常工作的同時(shí)必須對(duì)控制輸 入有實(shí)時(shí)的響應(yīng),中斷能夠比較出色的完成實(shí)時(shí)的響應(yīng),但是大量不同中斷的 存在,使得中斷之間的管理消耗系統(tǒng)資源,所以本系統(tǒng)在保證中斷存在的情況 下,利用硬件的時(shí)鐘中斷源,產(chǎn)生一個(gè)每10毫秒產(chǎn)生一次的時(shí)鐘中斷,同時(shí)本 系統(tǒng)中定義了一個(gè)全局的系統(tǒng)時(shí)刻標(biāo)簽,在時(shí)鐘中斷每次到來(lái)的時(shí)候此時(shí)刻標(biāo) 簽會(huì)加一,以此時(shí)刻標(biāo)簽為基準(zhǔn),可以安排時(shí)鐘中斷任務(wù)的執(zhí)行時(shí)間,即每一 個(gè)時(shí)鐘中斷任務(wù)在確立的時(shí)候都要確定具體執(zhí)行時(shí)刻,當(dāng)系統(tǒng)運(yùn)行至此時(shí)刻時(shí) 便執(zhí)行此任務(wù),如此的優(yōu)點(diǎn)是減少大量不同中斷的處理消耗,而以一個(gè)時(shí)鐘中 斷便完成了所有時(shí)鐘中斷任務(wù)的實(shí)時(shí)性要求。
時(shí)鐘中斷任務(wù)鏈表中任務(wù)按照任務(wù)處理優(yōu)先級(jí)的高低,又分為實(shí)時(shí)處理任 務(wù)及延后調(diào)度處理任務(wù).,其中實(shí)時(shí)處理任務(wù)的實(shí)時(shí)要求高,處理實(shí)時(shí)要求高、 復(fù)雜度低的任務(wù)時(shí),作為實(shí)時(shí)處理任務(wù),在所述時(shí)鐘中斷任務(wù)鏈表級(jí)直接處理, 其也屬于實(shí)時(shí)中斷級(jí)任務(wù)的處理;其中延后調(diào)度處理任務(wù)由時(shí)鐘中斷任務(wù)鏈表 規(guī)劃與調(diào)度處理,處理實(shí)時(shí)要求低、復(fù)雜度高的任務(wù)時(shí)作為延后調(diào)度處理任務(wù), 從時(shí)鐘中斷任務(wù)鏈表級(jí)調(diào)度到下級(jí)的任務(wù)査詢鏈表級(jí)處理。所述時(shí)鐘中斷任務(wù)鏈表的規(guī)劃與延后調(diào)度過(guò)程是,在系統(tǒng)時(shí)鐘的每個(gè)時(shí)刻 檢査是否有到時(shí)任務(wù)執(zhí)行,當(dāng)有任務(wù)執(zhí)行時(shí),區(qū)分是否緊急任務(wù),緊急任務(wù)立 即在所述時(shí)鐘中斷任務(wù)鏈表級(jí)直接處理,非緊急任務(wù)被調(diào)度到所述查詢鏈表級(jí) 中處理。
以下結(jié)合圖2、圖3對(duì)以上所述的實(shí)施過(guò)程進(jìn)一步說(shuō)明。
圖2為本發(fā)明方法中時(shí)鐘中斷任務(wù)鏈表任務(wù)處理與任務(wù)査詢鏈表任務(wù)處理 的關(guān)系圖。如圖2所示,中斷任務(wù)按照系統(tǒng)要求分別在固定時(shí)間啟動(dòng),中斷任 務(wù)鏈表10以雙向指針鏈表實(shí)現(xiàn),當(dāng)有新的任務(wù)添加時(shí),即增加一個(gè)關(guān)于此任務(wù) 的結(jié)構(gòu)體,按照此結(jié)構(gòu)體中的系統(tǒng)時(shí)鐘標(biāo)簽大小將其插入現(xiàn)有的中斷任務(wù)鏈表 10中,確保中斷任務(wù)鏈表10是按系統(tǒng)時(shí)鐘標(biāo)簽從小到大來(lái)排列的。圖2中示出 某時(shí)刻中斷任務(wù)鏈表10的狀態(tài),11、 12分別為中斷任務(wù)鏈表10的前兩個(gè)中斷 任務(wù)的結(jié)構(gòu)體,所以中斷任務(wù)11的系統(tǒng)執(zhí)行時(shí)刻一定比中斷任務(wù)12的早或者 相同,在每次發(fā)生時(shí)鐘中斷的時(shí)刻都檢査中斷任務(wù)鏈表10的首位,當(dāng)被檢査首 位中斷任務(wù)節(jié)點(diǎn)11的執(zhí)行時(shí)刻標(biāo)簽與當(dāng)前多任務(wù)管理系統(tǒng)由時(shí)鐘中斷產(chǎn)生的系 統(tǒng)時(shí)刻吻合時(shí),便摘除此任務(wù)節(jié)點(diǎn)11并立即執(zhí)行,實(shí)時(shí)處理任務(wù)。
圖3為發(fā)明方法中時(shí)鐘中斷任務(wù)鏈表任務(wù)處理的流程圖,步驟19為每次產(chǎn) 生時(shí)鐘中斷后系統(tǒng)時(shí)刻加一,接下來(lái)步驟20判斷時(shí)鐘中斷鏈表上是否有任務(wù), 如有則將首個(gè)到時(shí)任務(wù)摘除(步驟21),然后步驟22判斷此任務(wù)是否為立即執(zhí)行 任務(wù),如果是則在中斷中立即執(zhí)行(步驟23),為實(shí)時(shí)處理任務(wù),但是如果立即 執(zhí)行時(shí)間超出對(duì)應(yīng)時(shí)間片長(zhǎng)度(步驟24),則動(dòng)態(tài)分配中斷延后處理任務(wù)信息結(jié) 構(gòu)體,并復(fù)制該中斷延后處理任務(wù)信息結(jié)構(gòu)體,將其添加到中斷延后處理鏈表 尾部(步驟25-1, 25-2),將剩余任務(wù)信息轉(zhuǎn)移到高級(jí)任務(wù)査詢鏈表首個(gè)任務(wù); 如果不是立即執(zhí)行任務(wù),而是延后處理任務(wù),則與上相同,動(dòng)態(tài)分配中斷延后 處理任務(wù)信息結(jié)構(gòu)體,并復(fù)制該中斷延后處理任務(wù)信息結(jié)構(gòu)體,將其并添加到 中斷延后處理鏈表(即圖2中的中斷任務(wù)鏈表18)的尾部(步驟25-1, 25-2), 此延后處理結(jié)構(gòu)鏈表被掛在高級(jí)任務(wù)查詢鏈表首個(gè)任務(wù),因而在退出中斷后將 很快被執(zhí)行。依照上述步驟檢測(cè),完成一次任務(wù)后再檢査是否有到時(shí)任務(wù)(步驟 21),直到所有到時(shí)任務(wù)被處理完之后,退出此次中斷任務(wù)處理。
又如圖3、圖2所示,按照?qǐng)D3步驟25,在圖2中所示的延后調(diào)度處理的 中斷任務(wù)鏈表中,以新的雙向指針鏈表18實(shí)現(xiàn),其首節(jié)點(diǎn)16掛在高優(yōu)先級(jí)任務(wù)查詢鏈表15的首個(gè)任務(wù)處。每當(dāng)時(shí)鐘中斷處理到雙向指針鏈表10上調(diào)度處 理的中斷任務(wù)例如13時(shí),便將其從中斷任務(wù)鏈表10中摘除,并將此節(jié)點(diǎn)13的 任務(wù)信息復(fù)制到一個(gè)新動(dòng)態(tài)分配的任務(wù)結(jié)構(gòu)體17中,并將新任務(wù)結(jié)構(gòu)體17掛 在高優(yōu)先級(jí)任務(wù)鏈表18的尾部。當(dāng)任務(wù)査詢鏈表循環(huán)到高優(yōu)先級(jí)任務(wù)査詢鏈表 15的首個(gè)任務(wù)處時(shí),便將所有延后調(diào)度處理的中斷任務(wù)16、 17全部執(zhí)行。圖2 所示,在中斷任務(wù)鏈表10中,中斷任務(wù)12、 13均為延后調(diào)度處理的任務(wù),當(dāng) 系統(tǒng)時(shí)刻標(biāo)簽運(yùn)行到與之相應(yīng)時(shí)刻時(shí)候,中斷任務(wù)12、 13分別執(zhí)行,但是它們 并未在時(shí)鐘中斷級(jí)中執(zhí)行,而是生成了新的延后調(diào)度處理的任務(wù)16、 17,并插 入高優(yōu)先級(jí)查詢鏈表15的首個(gè)任務(wù)處,由于高優(yōu)先級(jí)任務(wù)鏈表的執(zhí)行頻率很高, 所以新的延后調(diào)度處理的任務(wù)16和17的實(shí)際執(zhí)行時(shí)間與設(shè)定時(shí)間相差很小, 近似于實(shí)時(shí)執(zhí)行,但由于新的延后處理的任務(wù)16和17的執(zhí)行所耗費(fèi)時(shí)間較多, 沒有放在任務(wù)鏈表10中執(zhí)行,所以減少了在任務(wù)鏈表10中對(duì)其他后續(xù)時(shí)鐘中 斷的影響,以充分保證任務(wù)鏈表10中部分任務(wù)的實(shí)時(shí)性。 (四)查詢?nèi)蝿?wù)的處理
任務(wù)査詢鏈表級(jí)任務(wù)為實(shí)時(shí)要求低的任務(wù),按照任務(wù)處理優(yōu)先級(jí)的高低又 分為高優(yōu)先級(jí)任務(wù)查詢鏈表任務(wù)及低優(yōu)先級(jí)任務(wù)査詢鏈表任務(wù),構(gòu)成雙査詢鏈 表任務(wù);從所述時(shí)鐘中斷任務(wù)鏈表級(jí)中調(diào)度來(lái)的任務(wù)是任務(wù)查詢鏈表中優(yōu)先級(jí) 最高的任務(wù),以保證所述時(shí)鐘中斷任務(wù)鏈表級(jí)中即使是優(yōu)先級(jí)最低的處理任務(wù) 也能比任務(wù)查詢鏈表級(jí)中的任務(wù)更優(yōu)先處理。
所述高優(yōu)先級(jí)任務(wù)查詢鏈表的首個(gè)任務(wù)是從時(shí)鐘中斷任務(wù)鏈表級(jí)中調(diào)度來(lái) 的待處理中斷任務(wù)。
在處理所述雙査詢鏈表任務(wù)時(shí),采取交叉循環(huán)的査詢方式,每次處理完一 個(gè)低優(yōu)先級(jí)任務(wù)査詢鏈表任務(wù)后,都會(huì)查詢是否有高優(yōu)先級(jí)任務(wù)查詢鏈表任務(wù) 等待處理,確保高優(yōu)先級(jí)任務(wù)查詢鏈表任務(wù)能夠始終被優(yōu)先查詢和處理,并且 同時(shí)提供任務(wù)加載與卸載的命令接口。
任務(wù)査詢鏈表的特征在于借鑒Linux系統(tǒng)的時(shí)間片管理,Linux系統(tǒng)基于時(shí) 間片的概念實(shí)現(xiàn)多任務(wù)處理,每一個(gè)任務(wù)都擁有一定的時(shí)間片,此時(shí)間片用完 就退出,不同優(yōu)先級(jí)的任務(wù)擁有不同的時(shí)間片,任務(wù)實(shí)現(xiàn)主動(dòng)調(diào)度。本發(fā)明方 法的特點(diǎn)在于系統(tǒng)的多個(gè)同優(yōu)先級(jí)任務(wù)擁有的時(shí)間片相同,即同一級(jí)中斷任務(wù) 鏈表或者任務(wù)査詢鏈表中的任務(wù)都擁有相同的時(shí)間片,多任務(wù)間為被動(dòng)調(diào)度,如果超出時(shí)間片便將此任務(wù)剩余信息進(jìn)行重新安排。
以上所述査詢?nèi)蝿?wù)處理的實(shí)施可參見圖2、圖4。
見圖2,任務(wù)査詢鏈表任務(wù)以一系列前后相連的函數(shù)指針實(shí)現(xiàn),如圖2中的 高優(yōu)先級(jí)任務(wù)査詢鏈表15和低優(yōu)先級(jí)任務(wù)査詢鏈表14。本多任務(wù)管理系統(tǒng)定義 兩個(gè)整數(shù)型值,其每一個(gè)比特位用于標(biāo)明髙優(yōu)先級(jí)任務(wù)查詢鏈表或者低優(yōu)先級(jí) 任務(wù)查詢鏈表的一個(gè)任務(wù)節(jié)點(diǎn)是否有注冊(cè)任務(wù),系統(tǒng)通過(guò)交叉循環(huán)的方式檢查 這兩個(gè)變量,即先檢査高優(yōu)先級(jí)標(biāo)識(shí)變量的每個(gè)比特,檢查完一遍高優(yōu)先級(jí)變 量所有比特之后,再檢查低優(yōu)先級(jí)標(biāo)識(shí)變量的一個(gè)比特位,然后再檢查一遍高 優(yōu)先級(jí)標(biāo)識(shí)變量的所有比特,如此循環(huán),當(dāng)檢查到高優(yōu)先級(jí)任務(wù)査詢鏈表或者 低優(yōu)先級(jí)任務(wù)查詢鏈表的標(biāo)識(shí)變量某一比特置位時(shí)表明有任務(wù)注冊(cè),則執(zhí)行對(duì) 應(yīng)任務(wù)查詢鏈表的任務(wù),反之不需要執(zhí)行。
圖4為發(fā)明方法中任務(wù)查詢鏈表任務(wù)處理的流程圖。如圖4所示,系統(tǒng)的
主循環(huán)即在執(zhí)行查詢?nèi)蝿?wù),首先看是否高優(yōu)先級(jí)任務(wù)查詢鏈表已經(jīng)全部檢測(cè)完 (步驟26),如沒檢測(cè)完則按順序檢測(cè)高優(yōu)先級(jí)任務(wù)查詢鏈表(步驟33),如果對(duì) 應(yīng)位置有任務(wù)(步驟34),則依次執(zhí)行此任務(wù),沒有則跳過(guò)。
但是系統(tǒng)的交互任務(wù)是比較特殊的(步驟27),它是始終存在的,用以對(duì)任 務(wù)鏈表中的任務(wù)進(jìn)行處置,根據(jù)交互任務(wù)的命令解析(步驟28),可以對(duì)任務(wù)查詢 鏈表中的任務(wù)進(jìn)行增加(步驟29)或者終止(步驟30),均是通過(guò)對(duì)相應(yīng)結(jié)構(gòu)體表 進(jìn)行修改完成的(步驟32)。根據(jù)交互任務(wù)的命令解析(步驟28)也可以對(duì)現(xiàn)存任 務(wù)進(jìn)行査詢(步驟31)。
如果被執(zhí)行任務(wù)不能在本優(yōu)先級(jí)任務(wù)時(shí)間片內(nèi)完成任務(wù),則執(zhí)行超時(shí)(步驟 35),即主動(dòng)把任務(wù)執(zhí)行的信息保存為一個(gè)新的任務(wù),添加到高優(yōu)先級(jí)任務(wù)査詢 鏈表的尾部(步驟36),等待高優(yōu)先級(jí)鏈表再次檢測(cè)到此任務(wù)時(shí)執(zhí)行。全部高優(yōu) 先級(jí)査詢?nèi)蝿?wù)結(jié)束之后,系統(tǒng)檢測(cè)下一位低優(yōu)先級(jí)查詢?nèi)蝿?wù)(步驟37),同樣根 據(jù)對(duì)應(yīng)比特位決定是否有任務(wù)執(zhí)行,如果超過(guò)對(duì)應(yīng)時(shí)間片(步驟38),也必須保 存剩余任務(wù)信息為新的低優(yōu)先級(jí)查詢?nèi)蝿?wù),并添加到低優(yōu)先級(jí)任務(wù)査詢鏈表尾 部(步驟39),等待低優(yōu)先級(jí)鏈表再次檢測(cè)到此任務(wù)時(shí)執(zhí)行。
由上述可見,時(shí)鐘中斷級(jí)任務(wù)或任務(wù)查詢鏈表級(jí)任務(wù)都由相應(yīng)的時(shí)間片設(shè) 定,高優(yōu)先級(jí)的任務(wù)實(shí)時(shí)性高,時(shí)間片??;當(dāng)任務(wù)執(zhí)行時(shí)間大于對(duì)應(yīng)優(yōu)先級(jí)所 限定的時(shí)間片時(shí)都需要作善后處理,將剩余任務(wù)信息生成新的任務(wù)結(jié)構(gòu)體,剩余中斷任務(wù)添加到高優(yōu)先級(jí)査詢鏈表首任務(wù)處,剩余查詢?nèi)蝿?wù)添加到相應(yīng)級(jí)別 任務(wù)査詢鏈表尾部,等待再次査詢到此任務(wù)時(shí)執(zhí)行。
圖3所示時(shí)鐘中斷級(jí)的任務(wù)為程序運(yùn)行中添加的定時(shí)任務(wù),圖4所示任務(wù) 査詢鏈表級(jí)的任務(wù)為手動(dòng)命令添加的應(yīng)用任務(wù)。 應(yīng)用實(shí)現(xiàn)
本任務(wù)管理系統(tǒng)已經(jīng)在本公司的音視頻芯片上得到應(yīng)用,此音視頻芯片以 ARM核為處理器,提供外掛SDRAM控制器,F(xiàn)lash控制器,液晶控制器等等的數(shù) 字多媒體SOC芯片,此芯片上層應(yīng)用可以基于Linux, Wince等操作系統(tǒng),也可 以基于自主的任務(wù)管理系統(tǒng)。
在此芯片的自主任務(wù)管理應(yīng)用中,主要任務(wù)包括音頻解碼,視頻解碼,
按鍵處理,系統(tǒng)監(jiān)控,命令處理,音視頻播放,圖形現(xiàn)實(shí),存儲(chǔ)卡管理等等。
根據(jù)本系統(tǒng)設(shè)計(jì)以及任務(wù)特點(diǎn),按鍵處理、系統(tǒng)監(jiān)控等實(shí)時(shí)要求高,定義為時(shí)
鐘中斷級(jí)任務(wù);命令處理、音視頻播放、圖形顯示等定義為高優(yōu)先級(jí)任務(wù);音
頻、視頻解碼由于以運(yùn)算為主,且一般會(huì)有緩存區(qū),因而被中斷的影響不大,
定義為低優(yōu)先級(jí)任務(wù)。
目前此芯片已經(jīng)流片,而采用此芯片和此任務(wù)管理系統(tǒng)為應(yīng)用方案的MP4
樣機(jī)也已經(jīng)完成,主要應(yīng)用功能實(shí)現(xiàn)良好。
權(quán)利要求
1. 基于嵌入式系統(tǒng)的多任務(wù)管理方法,根據(jù)嵌入式系統(tǒng)任務(wù)處理的實(shí)時(shí)性要求以及處理任務(wù)所需時(shí)間,將系統(tǒng)任務(wù)分為不同的優(yōu)先級(jí)任務(wù)進(jìn)行處理,最高優(yōu)先級(jí)任務(wù)為實(shí)時(shí)中斷級(jí)任務(wù),能夠?qū)崟r(shí)完成系統(tǒng)任務(wù)請(qǐng)求,所述最高優(yōu)先級(jí)任務(wù)按照任務(wù)處理優(yōu)先級(jí)的高低分為一般中斷級(jí)任務(wù)及固定頻率的時(shí)鐘中斷級(jí)任務(wù),其中一般中斷級(jí)任務(wù)在實(shí)時(shí)中斷級(jí)直接處理,本發(fā)明的特征在于固定頻率的時(shí)鐘中斷級(jí)任務(wù)產(chǎn)生系統(tǒng)時(shí)鐘,基于此系統(tǒng)將一系列中斷任務(wù)構(gòu)成時(shí)鐘中斷任務(wù)鏈表,此中斷任務(wù)鏈表為次高優(yōu)先級(jí)任務(wù)或?yàn)闀r(shí)鐘中斷級(jí)的任務(wù),按照任務(wù)處理優(yōu)先級(jí)的高低該級(jí)任務(wù)又分為實(shí)時(shí)處理任務(wù)及延后調(diào)度處理任務(wù)對(duì)于實(shí)時(shí)處理要求高、復(fù)雜度低的任務(wù),將其作為實(shí)時(shí)處理任務(wù),在所述時(shí)鐘中斷任務(wù)鏈表級(jí)直接處理,屬于實(shí)時(shí)中斷級(jí)任務(wù)的處理;延后調(diào)度處理任務(wù)是處理實(shí)時(shí)要求低、復(fù)雜度高的任務(wù),從時(shí)鐘中斷任務(wù)鏈表級(jí)調(diào)度到下級(jí)的任務(wù)查詢鏈表級(jí)處理;任務(wù)查詢鏈表級(jí)任務(wù)為實(shí)時(shí)要求低的任務(wù),按照任務(wù)處理優(yōu)先級(jí)的高低又分為高優(yōu)先級(jí)任務(wù)查詢鏈表任務(wù)及低優(yōu)先級(jí)任務(wù)查詢鏈表任務(wù),構(gòu)成雙查詢鏈表任務(wù);從所述時(shí)鐘中斷級(jí)中調(diào)度來(lái)的任務(wù)是任務(wù)查詢鏈表中優(yōu)先級(jí)最高的任務(wù),以保證所述時(shí)鐘中斷級(jí)中即使是優(yōu)先級(jí)最低的處理任務(wù)也能比任務(wù)查詢鏈表級(jí)中的任務(wù)更優(yōu)先處理。
2、 依據(jù)權(quán)利要求l所述的基于嵌入式系統(tǒng)的多任務(wù)管理方法,其特征在于 所述高優(yōu)先級(jí)任務(wù)査詢鏈表的首個(gè)任務(wù)是從時(shí)鐘中斷級(jí)中調(diào)度來(lái)的待處理中斷 任務(wù)。
3、 依據(jù)權(quán)利要求1或2所述的基于嵌入式系統(tǒng)的多任務(wù)管理方法,其特征 在于在處理所述雙査詢鏈表任務(wù)時(shí),采取交叉循環(huán)的查詢方式,每次處理完一 個(gè)低優(yōu)先級(jí)任務(wù)查詢鏈表任務(wù)后,都會(huì)查詢是否有高優(yōu)先級(jí)任務(wù)査詢鏈表任務(wù) 等待處理,確保高優(yōu)先級(jí)任務(wù)査詢鏈表任務(wù)能夠始終被優(yōu)先査詢和處理。
4、 依據(jù)權(quán)利要求1所述的基于嵌入式系統(tǒng)的多任務(wù)管理方法,其特征在于 上述時(shí)鐘中斷任務(wù)鏈表的被執(zhí)行過(guò)程是,在系統(tǒng)時(shí)鐘的每個(gè)時(shí)刻檢査是否有到 時(shí)任務(wù)執(zhí)行,當(dāng)有任務(wù)需要執(zhí)行時(shí),區(qū)分是否緊急任務(wù),緊急任務(wù)立即在所述 時(shí)鐘中斷任務(wù)鏈表級(jí)直接處理,非緊急任務(wù)被調(diào)度到所述查詢鏈表優(yōu)先級(jí)中處理。
5、 依據(jù)權(quán)利要求1所述的基于嵌入式系統(tǒng)的多任務(wù)管理方法,其特征在于 所述時(shí)鐘中斷級(jí)的任務(wù)為程序運(yùn)行中添加的定時(shí)任務(wù),所述任務(wù)査詢鏈表級(jí)的 任務(wù)為手動(dòng)命令添加的應(yīng)用任務(wù)。
6、 依據(jù)權(quán)利要求1或5所述的基于嵌入式系統(tǒng)的多任務(wù)管理方法,其特征 在于所述時(shí)鐘中斷級(jí)任務(wù)或任務(wù)査詢鏈表級(jí)任務(wù)都有相應(yīng)的時(shí)間片設(shè)定,高優(yōu) 先級(jí)的任務(wù)實(shí)時(shí)性高,時(shí)間片小;當(dāng)任務(wù)執(zhí)行時(shí)間大于對(duì)應(yīng)優(yōu)先級(jí)所限定的時(shí) 間片時(shí)都需要作善后處理,將剩余任務(wù)信息生成新的任務(wù)結(jié)構(gòu)體,剩余中斷任 務(wù)添加到高優(yōu)先級(jí)查詢鏈表首任務(wù)除,剩余査詢?nèi)蝿?wù)添加到相應(yīng)級(jí)別的任務(wù)查 詢鏈表尾部,等待再次查詢到此任務(wù)時(shí)執(zhí)行。
全文摘要
本發(fā)明涉及基于嵌入式系統(tǒng)的多任務(wù)管理方法,本發(fā)明方法將嵌入式系統(tǒng)有限的任務(wù)事先劃分成不同的任務(wù)優(yōu)先級(jí),最高為實(shí)時(shí)中斷級(jí),其次為時(shí)鐘中斷級(jí),再次為高優(yōu)先級(jí)任務(wù)查詢級(jí),最后為低優(yōu)先級(jí)任務(wù)查詢級(jí),越高優(yōu)先級(jí)的可執(zhí)行性越高,越能夠保證完成任務(wù),較低優(yōu)先級(jí)則可執(zhí)行性較低,因此將實(shí)時(shí)性要求高的任務(wù)安排在較高的任務(wù)級(jí),后臺(tái)實(shí)時(shí)性低的任務(wù)則為低任務(wù)級(jí)別。本發(fā)明的優(yōu)點(diǎn)在于充分保證部分任務(wù)執(zhí)行的實(shí)時(shí)性,節(jié)省系統(tǒng)資源,任務(wù)管理簡(jiǎn)單明了。
文檔編號(hào)G06F9/48GK101266553SQ20081002548
公開日2008年9月17日 申請(qǐng)日期2008年5月6日 優(yōu)先權(quán)日2008年5月6日
發(fā)明者波 張, 趙海源 申請(qǐng)人:無(wú)錫紫芯集成電路系統(tǒng)有限公司