張新玉,李愷,張鳳
?。ū本┛臻g機(jī)電研究所,北京 100094)
摘要:介紹了空間控制器軟件外中斷主程序循環(huán)查詢任務(wù)調(diào)度、外中斷定時(shí)器中斷查詢?nèi)蝿?wù)調(diào)度和外中斷串口中斷查詢?nèi)蝿?wù)調(diào)度三種任務(wù)調(diào)度模式,并對三種任務(wù)調(diào)度模式的適用范圍、優(yōu)缺點(diǎn)進(jìn)行了對比分析。結(jié)合工程實(shí)踐,采用外中斷串口中斷查詢?nèi)蝿?wù)調(diào)度模式,處理多個(gè)型號軟件任務(wù)調(diào)度,充分利用軟件資源,合理優(yōu)化軟件結(jié)構(gòu),大大提高了整個(gè)軟件的響應(yīng)及時(shí)性和資源利用率。
關(guān)鍵詞:空間控制器軟件;任務(wù)調(diào)度;響應(yīng)及時(shí)性
0引言
當(dāng)前空間控制器軟件針對不同任務(wù)需求,通常有三種任務(wù)調(diào)度方式:外中斷主程序循環(huán)查詢?nèi)蝿?wù)調(diào)度、外中斷定時(shí)器中斷查詢?nèi)蝿?wù)調(diào)度、外中斷串口中斷查詢?nèi)蝿?wù)調(diào)度 [14]。
本文結(jié)合實(shí)際應(yīng)用,分別對三種任務(wù)調(diào)度模式及其應(yīng)用范圍進(jìn)行介紹,并針對當(dāng)前空間控制器軟件任務(wù)現(xiàn)狀,在型號應(yīng)用中合理利用CPU串口中斷功能,通過串口中斷解析中控計(jì)算機(jī)指令,優(yōu)化軟件資源與調(diào)度,提高軟件對任務(wù)響應(yīng)的及時(shí)性和工作效率[5]。
1空間控制器軟件任務(wù)調(diào)度
中控計(jì)算機(jī)與空間控制器通過總線通信[67],空間控制器軟件通過外中斷程序接收中控計(jì)算機(jī)發(fā)送過來的數(shù)據(jù)信息。在外中斷程序中,設(shè)定總線數(shù)據(jù)緩沖區(qū),接收數(shù)據(jù)信息,設(shè)置相應(yīng)的標(biāo)志。軟件根據(jù)不同類型的標(biāo)志,設(shè)定對應(yīng)的數(shù)據(jù)處理緩沖區(qū)及緩沖區(qū)指針,將總線數(shù)據(jù)信息按類型轉(zhuǎn)存至對應(yīng)數(shù)據(jù)處理緩沖區(qū)。軟件根據(jù)指針值處理對應(yīng)數(shù)據(jù)緩沖區(qū)內(nèi)數(shù)據(jù)信息[8]。
1.1外中斷-主程序循環(huán)查詢?nèi)蝿?wù)調(diào)度
外中斷-主程序循環(huán)查詢?nèi)蝿?wù)調(diào)度模式適用于空間控制器軟件任務(wù)較少、軟件在主程序中通過循環(huán)查詢能夠及時(shí)處理任務(wù)或中控計(jì)算機(jī)對任務(wù)響應(yīng)及時(shí)性要求不高的情形。
軟件根據(jù)任務(wù)數(shù)據(jù)類型,設(shè)定不同的數(shù)據(jù)處理緩沖區(qū)及緩沖區(qū)指針。在收到中控計(jì)算機(jī)數(shù)據(jù)后,觸發(fā)CPU處理器外部中斷,在外中斷中解析收到的中控計(jì)算機(jī)數(shù)據(jù),根據(jù)不同的數(shù)據(jù)信息,設(shè)置不同的標(biāo)志,并將數(shù)據(jù)信息保存在相對應(yīng)的總線數(shù)據(jù)緩沖區(qū),退出外中斷程序。
軟件在主程序中循環(huán)查詢數(shù)據(jù)信息標(biāo)志,當(dāng)主程序查詢到相關(guān)標(biāo)志后,根據(jù)數(shù)據(jù)信息標(biāo)志,判斷收到的數(shù)據(jù)類型,提取相應(yīng)的中控計(jì)算機(jī)數(shù)據(jù),將其按類型保存在對應(yīng)的數(shù)據(jù)處理緩沖區(qū),釋放總線數(shù)據(jù)緩沖區(qū),對應(yīng)數(shù)據(jù)處理緩沖區(qū)指針加1,完成中控計(jì)算機(jī)數(shù)據(jù)通信任務(wù)的調(diào)度功能。通過主程序中其他模塊,查詢數(shù)據(jù)處理緩沖區(qū)指針值,根據(jù)指針值,處理接收到的中控計(jì)算機(jī)數(shù)據(jù)。具體操作流程如圖1所示。
1.2外中斷-定時(shí)器中斷查詢?nèi)蝿?wù)調(diào)度
外中斷-定時(shí)器中斷查詢?nèi)蝿?wù)調(diào)度模式適用于空間控制器軟件任務(wù)較復(fù)雜、對任務(wù)響應(yīng)及時(shí)性要求較高、外部圖1外中斷-主程序循環(huán)查詢?nèi)蝿?wù)調(diào)度模式架構(gòu)圖中斷資源全部被占用或定時(shí)器資源充足的情形,軟件在中斷程序中設(shè)置不同的數(shù)據(jù)信息標(biāo)志并保存數(shù)據(jù)信息后,啟動定時(shí)器計(jì)時(shí)計(jì)數(shù),再退出外中斷程序。定時(shí)時(shí)間到,進(jìn)入定時(shí)器中斷程序,查詢到相關(guān)數(shù)據(jù)信息標(biāo)志后,根據(jù)數(shù)據(jù)信息標(biāo)志,判斷收到的數(shù)據(jù)類型,提取相應(yīng)的中控計(jì)算機(jī)數(shù)據(jù),將其按類型保存在對應(yīng)的數(shù)據(jù)處理緩沖區(qū),釋放總線數(shù)據(jù)緩沖區(qū),對應(yīng)數(shù)據(jù)處理緩沖區(qū)指針加1,退出定時(shí)器中斷程序,完成中控計(jì)算機(jī)數(shù)據(jù)通信任務(wù)調(diào)度功能。利用軟件中特定功能模塊,查詢數(shù)據(jù)處理緩沖區(qū)指針值,根據(jù)指針值,處理接收到的中控計(jì)算機(jī)數(shù)據(jù)。具體操作流程如圖2所示。
1.3外中斷-串口中斷查詢?nèi)蝿?wù)調(diào)度
外中斷串口中斷查詢?nèi)蝿?wù)調(diào)度模式適用于空間控制器軟件任務(wù)復(fù)雜、對任務(wù)響應(yīng)及時(shí)性要求高、串口中斷資源閑置的情形,軟件在中斷程序中設(shè)置不同的數(shù)據(jù)信息標(biāo)志并保存數(shù)據(jù)信息后,啟動串口中斷,再退出外中斷程序。在串口中斷程序中實(shí)現(xiàn)定時(shí)器中斷功能,完成中控計(jì)算機(jī)數(shù)據(jù)通信任務(wù)調(diào)度功能。利用軟件中特定功能模塊查詢數(shù)據(jù)處理緩沖區(qū)指針值,根據(jù)指針值,處理接收到的中控計(jì)算機(jī)數(shù)據(jù)。具體操作流程如圖3所示。
1.4三種任務(wù)調(diào)度對比
在外中斷-主程序循環(huán)查詢?nèi)蝿?wù)調(diào)度模式下,軟件在運(yùn)行過程中,觸發(fā)外中斷,接收中控計(jì)算機(jī)發(fā)送來的數(shù)據(jù)信息,設(shè)置相應(yīng)數(shù)據(jù)信息標(biāo)志,退出外中斷,主程序循環(huán),查詢到相應(yīng)數(shù)據(jù)信息標(biāo)志后,處理相關(guān)數(shù)據(jù)信息。具體時(shí)序關(guān)系如圖4所示。
在該模式下,軟件在主程序中循環(huán)查詢外中斷中的數(shù)據(jù)信息標(biāo)志,若查詢到相關(guān)標(biāo)志,則執(zhí)行對應(yīng)標(biāo)志下的數(shù)據(jù)信息,否則執(zhí)行其他非查詢標(biāo)志類任務(wù)。由于軟件退出外中斷程序時(shí)機(jī)不確定,從而進(jìn)入主程序位置也不確定,導(dǎo)致軟件執(zhí)行主程序中相應(yīng)的查詢數(shù)據(jù)信息標(biāo)志,處理對應(yīng)數(shù)據(jù)信息部分功能不一定會及時(shí)響應(yīng)外中斷程序,中間可能會有一定的時(shí)間間隔。另外,若外中斷觸發(fā)頻率很高,或者軟件待處理的任務(wù)較多、較復(fù)雜,則可能會出現(xiàn)軟件頻繁進(jìn)入外中斷或主程序循環(huán)執(zhí)行周期較長的現(xiàn)象,從而導(dǎo)致主程序中循環(huán)查詢數(shù)據(jù)信息標(biāo)志處理相關(guān)數(shù)據(jù)信息功能,來不及處理相關(guān)數(shù)據(jù)信息而不能滿足任務(wù)需求的情況。但是,由于整個(gè)軟件架構(gòu)中中斷資源使用較少,因此對于整個(gè)軟件來說,可靠性相對較高,因此該模式適用于軟件任務(wù)較少、在主程序中通過循環(huán)查詢能夠及時(shí)響應(yīng)任務(wù)處理或中控計(jì)算機(jī)對任務(wù)響應(yīng)及時(shí)性要求不高、功能較簡單、對軟件可靠性要求很高的空間控制器軟件。
在外中斷定時(shí)器中斷查詢?nèi)蝿?wù)調(diào)度模式下,軟件在中斷程序中處理相關(guān)信息,啟動定時(shí)器,退出外中斷后,定時(shí)時(shí)間到,進(jìn)入定時(shí)器中斷,處理相關(guān)數(shù)據(jù)信息。退出定時(shí)器中斷后,軟件繼續(xù)執(zhí)行主程序循環(huán),等待新的中控計(jì)算機(jī)數(shù)據(jù)信息觸發(fā)中斷,執(zhí)行相應(yīng)操作。由于定時(shí)時(shí)間與外中斷執(zhí)行時(shí)間不能完全匹配,因此軟件可能在退出外中斷后立即進(jìn)入定時(shí)器中斷程圖3外中斷串口中斷查詢?nèi)蝿?wù)調(diào)度模式架構(gòu)圖圖4外中斷主程序循環(huán)查詢?nèi)蝿?wù)調(diào)度模式時(shí)序
序,也可能中間插入了一段主程序,等定時(shí)時(shí)間到后,進(jìn)入定時(shí)器中斷程序,具體時(shí)序關(guān)系如圖5所示。
在該模式下,需占用一個(gè)定時(shí)器資源,由于該定時(shí)器主要用來響應(yīng)外中斷中的中控計(jì)算機(jī)數(shù)據(jù)信息,為了減少外中斷數(shù)據(jù)信息的處理時(shí)間,提高對外中斷的響應(yīng)速度,若設(shè)定的定時(shí)器計(jì)時(shí)時(shí)間較長,則會導(dǎo)致退出外中斷后,定時(shí)器定時(shí)未到,軟件無法及時(shí)進(jìn)入定時(shí)器中斷;若設(shè)置較短的定時(shí)周期,使得退出外中斷后及時(shí)進(jìn)入定時(shí)器中斷,則其定時(shí)周期受高級中斷影響更加不確定,導(dǎo)致定時(shí)器定時(shí)不準(zhǔn)。因此該定時(shí)器不再復(fù)用作其他功能,從而占用較多軟件資源。若軟件有其他未用中斷(如串口等),會造成一定的資源浪費(fèi),另外獨(dú)占一個(gè)定時(shí)器,會增加其他定時(shí)器的任務(wù)量,導(dǎo)致定時(shí)器中斷處理程序復(fù)雜度提高。因此該模式通常適用于空間控制器軟件任務(wù)較復(fù)雜、對任務(wù)響應(yīng)及時(shí)性要求較高、外部中斷資源全部被占用或定時(shí)器資源充足、同時(shí)中控計(jì)算機(jī)對軟件響應(yīng)的實(shí)時(shí)性要求較高的空間控制器軟件。
在外中斷串口中斷查詢?nèi)蝿?wù)調(diào)度模式下,軟件在中斷程序中處理相關(guān)信息,啟動串口中斷,退出外中斷后,進(jìn)入串口中斷,處理相關(guān)數(shù)據(jù)信息。退出串口中斷程序后,軟件繼續(xù)執(zhí)行主程序循環(huán),等待新的中控計(jì)算機(jī)數(shù)據(jù)信息觸發(fā)中斷,執(zhí)行相應(yīng)操作。具體時(shí)序關(guān)系如圖6所示?!?/p>
在該模式下,利用通常不被使用的串口中斷,通過軟件設(shè)置串口中斷,在退出外中斷程序后,立即進(jìn)入串口中斷,既不存在外中斷主程序循環(huán)查詢?nèi)蝿?wù)調(diào)度模式中中斷響應(yīng)時(shí)機(jī)不確定的現(xiàn)象,也不存在外中斷定時(shí)器中斷任務(wù)調(diào)度模式中可能出現(xiàn)的資源浪費(fèi)現(xiàn)象,整個(gè)系統(tǒng)軟件的資源得到最合理的優(yōu)化配置。相對于外中斷定時(shí)器中斷任務(wù)調(diào)度模式,若軟件串口閑置,則利用軟件串口功能,可以釋放一個(gè)定時(shí)器資源,通過合理優(yōu)化,實(shí)現(xiàn)更多更復(fù)雜的定時(shí)功能,提高整個(gè)軟件的執(zhí)行效率和可靠性。因此,該模式通常適用于資源緊張、軟件功能復(fù)雜、定時(shí)要求多、響應(yīng)實(shí)時(shí)性要求苛刻、同時(shí)串口中斷未被使用的空間控制器軟件。
2推廣應(yīng)用
一般中控計(jì)算機(jī)與空間控制器軟件通過外部中斷來觸發(fā)通信。為了提高系統(tǒng)響應(yīng)速度,通常在未使用的中斷中處理相應(yīng)任務(wù)??紤]到各處理器中斷資源相對緊張,同時(shí)部分中斷資源(如串口、軟中斷等)不用來通信的現(xiàn)狀[13],可以在相關(guān)控制軟件中,利用未使用的中斷資源,滿足及時(shí)響應(yīng)通信任務(wù)的要求,節(jié)省定時(shí)器資源,更好地處理相關(guān)控制任務(wù),提高軟件控制性能。
3結(jié)論
針對當(dāng)前空間控制器軟件任務(wù)現(xiàn)狀,本文中所述的通過串口中斷資源進(jìn)行任務(wù)調(diào)度的方案已經(jīng)應(yīng)用于多個(gè)型號的空間控制器軟件任務(wù)調(diào)度中。該方案充分利用CPU中斷資源,避免資源浪費(fèi)以及由此導(dǎo)致的功能較單一問題,為軟件處理更復(fù)雜任務(wù)調(diào)度及控制功能提供了資源,提高了軟件響應(yīng)速度和控制性能,便于拓展系統(tǒng)功能。
參考文獻(xiàn)
[1] 顏軍.SPARC嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)[M].北京:中國標(biāo)準(zhǔn)出版社,2013.
[2] 寧改娣,楊拴科.DSP控制器原理及應(yīng)用[M].北京:科學(xué)出版社,2002.
[3] 胡乾斌,李光斌,李玲,等.單片微型計(jì)算機(jī)原理與應(yīng)用[M].武漢:華中科技大學(xué)出版社,2005.
[4] 張少展,張春梅.基于軟件規(guī)模的需求優(yōu)先級排序方法應(yīng)用[J].微型機(jī)與應(yīng)用,2015,34(1):8184
?。?] 潘靈.RapidIO高性能通信中間件設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(12):107109.
[6] 饒運(yùn)濤,鄒繼軍,鄭勇蕓.現(xiàn)場總線CAN 原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2004.
?。?] Data Device Corp. ACE/MiniACE Series BC/RT/MT advanced communication engine intergrated 1553 teminal user’s guide [Z]. New York: Data Device Corp. 2005.
?。?] 康曉軍,王勁強(qiáng),王蕓.基于擴(kuò)展塊的星載軟件控制流容錯(cuò)評價(jià)方法[J].航天返回與遙感,2007,28(3);3339.