基于DeltaOS的系統(tǒng)軟件設(shè)計
雙星定位系統(tǒng)是我國自主開發(fā)的定位導(dǎo)航系統(tǒng),它的用戶手持終端對實時性要求高,考慮到價格以及開發(fā)周期的因素,用戶機系統(tǒng)軟件的開發(fā)選用了具有國內(nèi)自主知識產(chǎn)權(quán)的DeltaOS.
本文引用地址:http://m.butianyuan.cn/article/150332.htm本系統(tǒng)的系統(tǒng)軟件在DeltaCORE內(nèi)核上構(gòu)建,選擇采用C語言編寫,來提高軟件的執(zhí)行效率和可讀性;圖形界面基于DeltaGUI設(shè)計,采用C++編寫,以縮短開發(fā)周期。該系統(tǒng)軟件設(shè)計的重點在于穩(wěn)定性和可靠性,關(guān)鍵和難點在于實時性的保證。作為一個完善的系統(tǒng),軟件功能的可擴展性也是必不可少的。本文從總體設(shè)計入手,針對性地解決了以上問題。
1 系統(tǒng)功能
雙星用戶機是一個定位和通信終端,它除了必須完成定位、通信功能外,還需要有友善的人機交互界面以及測試設(shè)備接口。嵌入式系統(tǒng)和外設(shè)之間的關(guān)系如圖1所示。
嵌入式系統(tǒng)的硬件平臺是通用性的平臺,算法實現(xiàn)和設(shè)備各部分的協(xié)調(diào)控制都由嵌入式軟件來實現(xiàn)。軟件部分需要完成的具體功能有:界面輸入輸出控制、入站數(shù)據(jù)段打包、入站信息加密、入站幀打包、出站幀拆包、出站信息解密和提供測試接口。
2 提高系統(tǒng)的實時性
2.1 任務(wù)劃分的優(yōu)化
在設(shè)計一個較為復(fù)雜的多任務(wù)應(yīng)用時,進行的合理的任務(wù)劃分對系統(tǒng)的運行效率、實時性和吞吐量影響極大。任務(wù)分解過細會引起任務(wù)頻繁切換的開銷增加,而任務(wù)分解不夠徹底會造成原本可以并行的操作只能按順序串行完成,從而減少了系統(tǒng)的吞吐量。
在將一個軟件系統(tǒng)分解成并行任務(wù)時,主要需考慮的是系統(tǒng)功能的異步性。分析數(shù)據(jù)流圖中的變換,確定哪些變換可以并行,哪些變換在本質(zhì)上是順序的,通過這種方法,劃分出任務(wù):一個變換對應(yīng)一個任務(wù),或者一個任務(wù)包括幾個變換。一個變換是應(yīng)該成為一個獨立的任務(wù),還是應(yīng)該和其他變換一起組成一個任務(wù),本軟件中遵循了H-Gomma原則[1],即:
?、買/O依賴性原則
?、跁r間關(guān)鍵性原則
③大計算量原則
?、芄δ軆?nèi)聚
?、輹r間內(nèi)聚
?、拗芷谛栽瓌t
本系統(tǒng)的軟件分為應(yīng)用軟件和系統(tǒng)軟件兩大部份。應(yīng)用軟件部分位于系統(tǒng)軟件上層,它完成圖形界面的輸入及顯示功能。應(yīng)用軟件部分具有處理時間長、實時性要求不高和不存在并行性的特點,因此作為一個GUI任務(wù)并且賦予最低優(yōu)先級。系統(tǒng)軟件需要完成所有出入站信息處理,處理過程復(fù)雜,實時性要求高,順序處理顯然不能滿足要求,因此必須進行任務(wù)劃分優(yōu)化。
圖2為入站信息處理的數(shù)據(jù)流圖,圖3位出站信息處理的數(shù)據(jù)流圖。
根據(jù)I/O依賴性原則,直接和I/O設(shè)備打交道的功能都應(yīng)該成為獨立的任務(wù),因為它的運行速度受制于與它交互的I/O設(shè)備的速度。在入站流程中,向IC卡發(fā)指令、接收IC卡響應(yīng)信息和送入站數(shù)據(jù)幀至基帶均存在I/O操作,應(yīng)該獨立劃分為一個任務(wù)。同理,出站信息處理過程中的主通道數(shù)據(jù)讀取、次通道數(shù)據(jù)讀取、向IC卡發(fā)指令和接收IC卡響應(yīng)信息分別劃分為獨立的任務(wù)。
圖2 入站信息處理數(shù)據(jù)流圖
圖3 出站信息處理數(shù)據(jù)流圖
根據(jù)功能內(nèi)聚原則,功能緊密相關(guān)的變換組成一個任務(wù),它們共享資源或相同事件的驅(qū)動。定位數(shù)據(jù)段打包和通信數(shù)據(jù)段打包具有相似功能,它們均由有效輸入的指令觸發(fā),可以合并為一個數(shù)據(jù)段打包任務(wù),針對不同類別的請求使用不同的功能模塊來處理。這樣,當系統(tǒng)需要增加新的功能時只需在該任務(wù)中增加相應(yīng)的處理模塊即可,可擴展性得到了保證。
根據(jù)時間內(nèi)聚原則,同一時間內(nèi)完成的功能,即使這些功能不相關(guān)也可組成一個任務(wù)。數(shù)據(jù)段的打包在輸入指令解釋完成之后立即被處理,在時間上具有連續(xù)性,合并成一個任務(wù)可以減少任務(wù)間通信開銷,有利于提高系統(tǒng)實時性。
主通道數(shù)據(jù)幀拆包、次通道數(shù)據(jù)幀拆包和入站數(shù)據(jù)幀打包的運算量大,適合作為獨立的任務(wù)。然而,主通道和次通道出站數(shù)據(jù)幀格式相同,完全可以共用一個任務(wù):出站幀數(shù)據(jù)拆包。
雖然加密指令打包和解密指令打包分別處于入站信息處理流程和出站信息處理流程,但是它們同屬IC卡指令打包,具有很強的功能內(nèi)聚性,合并為一個任務(wù)共用IC卡驅(qū)動。
任務(wù)重新劃分如圖4所示。優(yōu)化之后,不但系統(tǒng)軟件實時性和可擴展性得到增強,而且由于充分的代碼重用,代碼尺寸減小,節(jié)省存儲空間。
圖4 優(yōu)化后的出入站任務(wù)劃分和數(shù)據(jù)流圖
2.2 中斷優(yōu)化
任務(wù)的切換是由操作系統(tǒng)來調(diào)度的,操作系統(tǒng)的干預(yù)會浪費CPU時間。特別是對于時間關(guān)鍵性很強任務(wù),例如基帶主通道數(shù)據(jù)讀取、次通道數(shù)據(jù)讀取、向IC卡發(fā)指令、接收IC卡相應(yīng)信息任務(wù),頻繁的任務(wù)調(diào)度會使系統(tǒng)的效率低下。因此,這些處理直接由中斷服務(wù)子程序來完成。
雖然中斷服務(wù)響應(yīng)速度快,但是當一個中斷服務(wù)執(zhí)行時,其它同優(yōu)先級或較低優(yōu)先級的中斷以及任意優(yōu)先級的任務(wù)均得不到執(zhí)行。因此如果中斷服務(wù)所占用的時間過長,同樣會降低系統(tǒng)的實時性。
為了提高系統(tǒng)的實時性,本系統(tǒng)軟件在中斷處理上主要做了以下兩方面的優(yōu)化:
?、僦袛鄡?yōu)先級設(shè)置的優(yōu)化,將觸發(fā)頻率高的中斷和重要的中斷設(shè)為高優(yōu)先級來保證其及時響應(yīng)。
?、陉P(guān)中斷時間應(yīng)該盡可能地小,ISRs只完成一些必要的操作,如:輸入數(shù)據(jù)、輸出數(shù)據(jù)或?qū)⒖刂菩畔鬟f給任務(wù),對中斷的進一步處理通過任務(wù)來完成[2]。
評論