基于DeltaOS的系統軟件設計
雙星定位系統是我國自主開(kāi)發(fā)的定位導航系統,它的用戶(hù)手持終端對實(shí)時(shí)性要求高,考慮到價(jià)格以及開(kāi)發(fā)周期的因素,用戶(hù)機系統軟件的開(kāi)發(fā)選用了具有國內自主知識產(chǎn)權的DeltaOS.
本文引用地址:http://dyxdggzs.com/article/150332.htm本系統的系統軟件在DeltaCORE內核上構建,選擇采用C語(yǔ)言編寫(xiě),來(lái)提高軟件的執行效率和可讀性;圖形界面基于DeltaGUI設計,采用C++編寫(xiě),以縮短開(kāi)發(fā)周期。該系統軟件設計的重點(diǎn)在于穩定性和可靠性,關(guān)鍵和難點(diǎn)在于實(shí)時(shí)性的保證。作為一個(gè)完善的系統,軟件功能的可擴展性也是必不可少的。本文從總體設計入手,針對性地解決了以上問(wèn)題。
1 系統功能
雙星用戶(hù)機是一個(gè)定位和通信終端,它除了必須完成定位、通信功能外,還需要有友善的人機交互界面以及測試設備接口。嵌入式系統和外設之間的關(guān)系如圖1所示。
嵌入式系統的硬件平臺是通用性的平臺,算法實(shí)現和設備各部分的協(xié)調控制都由嵌入式軟件來(lái)實(shí)現。軟件部分需要完成的具體功能有:界面輸入輸出控制、入站數據段打包、入站信息加密、入站幀打包、出站幀拆包、出站信息解密和提供測試接口。
2 提高系統的實(shí)時(shí)性
2.1 任務(wù)劃分的優(yōu)化
在設計一個(gè)較為復雜的多任務(wù)應用時(shí),進(jìn)行的合理的任務(wù)劃分對系統的運行效率、實(shí)時(shí)性和吞吐量影響極大。任務(wù)分解過(guò)細會(huì )引起任務(wù)頻繁切換的開(kāi)銷(xiāo)增加,而任務(wù)分解不夠徹底會(huì )造成原本可以并行的操作只能按順序串行完成,從而減少了系統的吞吐量。
在將一個(gè)軟件系統分解成并行任務(wù)時(shí),主要需考慮的是系統功能的異步性。分析數據流圖中的變換,確定哪些變換可以并行,哪些變換在本質(zhì)上是順序的,通過(guò)這種方法,劃分出任務(wù):一個(gè)變換對應一個(gè)任務(wù),或者一個(gè)任務(wù)包括幾個(gè)變換。一個(gè)變換是應該成為一個(gè)獨立的任務(wù),還是應該和其他變換一起組成一個(gè)任務(wù),本軟件中遵循了H-Gomma原則[1],即:
?、買(mǎi)/O依賴(lài)性原則
?、跁r(shí)間關(guān)鍵性原則
?、鄞笥嬎懔吭瓌t
?、芄δ軆染?/p>
?、輹r(shí)間內聚
?、拗芷谛栽瓌t
本系統的軟件分為應用軟件和系統軟件兩大部份。應用軟件部分位于系統軟件上層,它完成圖形界面的輸入及顯示功能。應用軟件部分具有處理時(shí)間長(cháng)、實(shí)時(shí)性要求不高和不存在并行性的特點(diǎn),因此作為一個(gè)GUI任務(wù)并且賦予最低優(yōu)先級。系統軟件需要完成所有出入站信息處理,處理過(guò)程復雜,實(shí)時(shí)性要求高,順序處理顯然不能滿(mǎn)足要求,因此必須進(jìn)行任務(wù)劃分優(yōu)化。
圖2為入站信息處理的數據流圖,圖3位出站信息處理的數據流圖。
根據I/O依賴(lài)性原則,直接和I/O設備打交道的功能都應該成為獨立的任務(wù),因為它的運行速度受制于與它交互的I/O設備的速度。在入站流程中,向IC卡發(fā)指令、接收IC卡響應信息和送入站數據幀至基帶均存在I/O操作,應該獨立劃分為一個(gè)任務(wù)。同理,出站信息處理過(guò)程中的主通道數據讀取、次通道數據讀取、向IC卡發(fā)指令和接收IC卡響應信息分別劃分為獨立的任務(wù)。

圖2 入站信息處理數據流圖
圖3 出站信息處理數據流圖
根據功能內聚原則,功能緊密相關(guān)的變換組成一個(gè)任務(wù),它們共享資源或相同事件的驅動(dòng)。定位數據段打包和通信數據段打包具有相似功能,它們均由有效輸入的指令觸發(fā),可以合并為一個(gè)數據段打包任務(wù),針對不同類(lèi)別的請求使用不同的功能模塊來(lái)處理。這樣,當系統需要增加新的功能時(shí)只需在該任務(wù)中增加相應的處理模塊即可,可擴展性得到了保證。
根據時(shí)間內聚原則,同一時(shí)間內完成的功能,即使這些功能不相關(guān)也可組成一個(gè)任務(wù)。數據段的打包在輸入指令解釋完成之后立即被處理,在時(shí)間上具有連續性,合并成一個(gè)任務(wù)可以減少任務(wù)間通信開(kāi)銷(xiāo),有利于提高系統實(shí)時(shí)性。
主通道數據幀拆包、次通道數據幀拆包和入站數據幀打包的運算量大,適合作為獨立的任務(wù)。然而,主通道和次通道出站數據幀格式相同,完全可以共用一個(gè)任務(wù):出站幀數據拆包。
雖然加密指令打包和解密指令打包分別處于入站信息處理流程和出站信息處理流程,但是它們同屬I(mǎi)C卡指令打包,具有很強的功能內聚性,合并為一個(gè)任務(wù)共用IC卡驅動(dòng)。
任務(wù)重新劃分如圖4所示。優(yōu)化之后,不但系統軟件實(shí)時(shí)性和可擴展性得到增強,而且由于充分的代碼重用,代碼尺寸減小,節省存儲空間。

圖4 優(yōu)化后的出入站任務(wù)劃分和數據流圖
2.2 中斷優(yōu)化
任務(wù)的切換是由操作系統來(lái)調度的,操作系統的干預會(huì )浪費CPU時(shí)間。特別是對于時(shí)間關(guān)鍵性很強任務(wù),例如基帶主通道數據讀取、次通道數據讀取、向IC卡發(fā)指令、接收IC卡相應信息任務(wù),頻繁的任務(wù)調度會(huì )使系統的效率低下。因此,這些處理直接由中斷服務(wù)子程序來(lái)完成。
雖然中斷服務(wù)響應速度快,但是當一個(gè)中斷服務(wù)執行時(shí),其它同優(yōu)先級或較低優(yōu)先級的中斷以及任意優(yōu)先級的任務(wù)均得不到執行。因此如果中斷服務(wù)所占用的時(shí)間過(guò)長(cháng),同樣會(huì )降低系統的實(shí)時(shí)性。
為了提高系統的實(shí)時(shí)性,本系統軟件在中斷處理上主要做了以下兩方面的優(yōu)化:
?、僦袛鄡?yōu)先級設置的優(yōu)化,將觸發(fā)頻率高的中斷和重要的中斷設為高優(yōu)先級來(lái)保證其及時(shí)響應。
?、陉P(guān)中斷時(shí)間應該盡可能地小,ISRs只完成一些必要的操作,如:輸入數據、輸出數據或將控制信息傳遞給任務(wù),對中斷的進(jìn)一步處理通過(guò)任務(wù)來(lái)完成[2]。
評論