引言
軟件體系結(jié)構(gòu)是對軟件各高層抽象的理解,必須在較早階段對軟件進(jìn)行體系結(jié)構(gòu)層的分析,其中算法和數(shù)據(jù)結(jié)構(gòu)的選擇處在軟件體系結(jié)構(gòu)的較低層次上。系統(tǒng)結(jié)構(gòu)的問題包括:用一系列組件來組織一個系統(tǒng),全局控制結(jié)構(gòu),通信、同步和數(shù)據(jù)存取協(xié)議,設(shè)計元件之間功能的劃分,物理的分布方式,系統(tǒng)運行狀況的估計和測量,演化方向,設(shè)計模式的選擇等,這些都是設(shè)計階段的軟件體系結(jié)構(gòu)。
傳統(tǒng)星載軟件的設(shè)計方法、開發(fā)手段已不能適應(yīng)日益復(fù)雜的需求,采用微內(nèi)核的實時操作系統(tǒng)作為軟件的系統(tǒng)結(jié)構(gòu)是一種縮短開發(fā)周期、調(diào)試方便有效的快速解決方案。經(jīng)過比較,在采用32位微處理器的前提下選用Vxworks嵌入式實時操作系統(tǒng)。
圖1 縱橫結(jié)合型體系結(jié)構(gòu)設(shè)計
軟件體系結(jié)構(gòu)分析與總體設(shè)計
目前比較普遍的體系結(jié)構(gòu)有:
管道和過濾器型
這種體系結(jié)構(gòu)中每個組件有一系列輸入和一系列輸出,一個組件從它的入口讀取數(shù)據(jù)流,在它的出口產(chǎn)生數(shù)據(jù)流。組件就是過濾器,在組件之間傳送數(shù)據(jù)的接口即管道。
面向?qū)ο蟮慕M織方式
數(shù)據(jù)和它的原始操作是封裝在對象內(nèi)部,對象通過事件驅(qū)動來協(xié)同工作。對象要保證內(nèi)部數(shù)據(jù)的正確性和對外實現(xiàn)方法的隱藏性。
共享存儲體型
包含兩種不同的組件,中心數(shù)據(jù)結(jié)構(gòu)代表當(dāng)前狀態(tài),一系列獨立的組件來操縱中心數(shù)據(jù)存儲,并通過中心存儲體相互通訊。
解釋機型
用軟件產(chǎn)生的一個虛擬機,模仿其他機器,解釋并執(zhí)行特定的指令序列。
垂直型
包含一系列類,并將它們組織成層次和線索。層次是在相同抽象層次的一系列類。線索是一類子系統(tǒng),它們之間存在調(diào)用與被調(diào)用的關(guān)系,在執(zhí)行后,完成一個子系統(tǒng)的功能。
層次型
一個分層系統(tǒng)中,每一層向它的上一層提供服務(wù),同時使用它的下一層提供的服務(wù)。這種結(jié)構(gòu)支持基于抽象層次的設(shè)計、演化和重用。層次型又分為橫向型、縱向型與縱橫結(jié)合型。
橫向體系結(jié)構(gòu),是指某一個軟件系統(tǒng)可分為多個層次,層次之間的組件關(guān)系較為簡單,只有上層組件調(diào)用下層組件的關(guān)系,而同一層次內(nèi)部各組件之間的聯(lián)系較為密切,相互之間傳送消息比較頻繁。在采用體系結(jié)構(gòu)的基礎(chǔ)上,按信息流來劃分邊界,信息流內(nèi)部再劃分子系統(tǒng)。
縱向體系結(jié)構(gòu)中包含層次和線索兩個概念。層次是指在相同的抽象層次上的一系列組件,而線索是子系統(tǒng)的特例,指所包含的一系列組件用于完成一個功能。縱向的軟件結(jié)構(gòu)具有可理解性、可適應(yīng)性、可重用性。
縱橫結(jié)合型體系結(jié)構(gòu)中,一個組件不僅在垂直方向與其他組件發(fā)生關(guān)系,同時在水平方向也與其他組件發(fā)生作用。針對衛(wèi)星姿軌控系統(tǒng)的需求,軟件系統(tǒng)采用縱橫結(jié)合型體系結(jié)構(gòu),如圖1所示。
在姿軌控軟件結(jié)構(gòu)設(shè)計上要力求簡單,模塊化結(jié)構(gòu)的軟件易于單獨開發(fā)而后集成,在按照共同的數(shù)據(jù)接口開發(fā)后,便于測試,若在軌運行過程中出現(xiàn)問題,易于查找錯誤和排除錯誤,從而到達(dá)提高可靠性的目的。在設(shè)計小衛(wèi)星軟件系統(tǒng)的過程中,可以借鑒“模塊化公用艙”和“軟件總線”思想,對星載嵌入式軟件系統(tǒng)的開發(fā)采用模塊化軟構(gòu)件來設(shè)計軟件的功能模塊,從而提高軟件開發(fā)的效率、程序的質(zhì)量,并改進(jìn)維護方式。
圖2 設(shè)計流程圖
圖3 仿真圖
圖4 仿真圖
從軟件角度,姿軌控軟件主要完成以下功能:設(shè)置系統(tǒng)工作模式、部件工作狀態(tài);接收星務(wù)總線傳來的軌道參數(shù)、在軌編程信息等;實時采集數(shù)據(jù)并進(jìn)行處理;根據(jù)控制律,計算控制指令,對太陽或地球跟蹤定向;在軌檢測、系統(tǒng)重構(gòu)等??蓪⑿禽d控制計算機軟件分為三部分:系統(tǒng)引導(dǎo)程序、系統(tǒng)軟件、應(yīng)用軟件。
設(shè)計流程與任務(wù)調(diào)度方式
實時操作系統(tǒng)為應(yīng)用軟件和其它模塊提供運行環(huán)境和多任務(wù)管理。應(yīng)用軟件通過設(shè)備驅(qū)動模塊采集敏感部件的姿態(tài)信息和GPS接收機的軌道信息,進(jìn)行控制規(guī)律的解算,并通過設(shè)備驅(qū)動模塊控制執(zhí)行機構(gòu)和太陽帆板。程序和數(shù)據(jù)注入模塊通過數(shù)據(jù)總線獲得地面的程序或者數(shù)據(jù)注入到應(yīng)用軟件;遙測遙控數(shù)據(jù)管理模塊通過數(shù)據(jù)總線與地面測控系統(tǒng)進(jìn)行數(shù)據(jù)和指令的傳輸。軟件結(jié)構(gòu)設(shè)計流程如圖2所示。
姿軌控應(yīng)用程序在實現(xiàn)上由多個任務(wù)協(xié)同工作完成,在結(jié)構(gòu)上分為多任務(wù)調(diào)度管理任務(wù)(或稱為Schedule任務(wù))、遙測遙控任務(wù)、故障診斷及系統(tǒng)重構(gòu)任務(wù)、程序和數(shù)據(jù)注入任務(wù)、系統(tǒng)工作模式管理任務(wù)、姿態(tài)確定與控制、軌道控制等應(yīng)用任務(wù)模塊。
作為多任務(wù)操作系統(tǒng),為了突出實時性,降低系統(tǒng)調(diào)度的開銷,它的任務(wù)并不是真正的任務(wù)而是線程。姿軌控系統(tǒng)各個任務(wù)可以工作在系統(tǒng)級或者應(yīng)用級,而且有許多不同的運行方式,這些都可以在使用中自由選擇,軟件設(shè)計人員有很大的靈活性。因此在姿軌控軟件的設(shè)計中,要充分考慮到嵌入式軟件的設(shè)計特點,合理利用它的特性。
在整個姿軌控系統(tǒng)中多任務(wù)管理任務(wù)工作于系統(tǒng)級,其他的任務(wù)均工作于應(yīng)用級。工作于系統(tǒng)級的任務(wù)有更高的權(quán)限且受到操作系統(tǒng)的保護,這樣可以防止應(yīng)用程序?qū)ο到y(tǒng)程序的誤操作,Schedule任務(wù)負(fù)責(zé)對其他任務(wù)的管理,工作于系統(tǒng)級。在其他的任務(wù)中與硬件相關(guān)的底層任務(wù)優(yōu)先級較高,其中故障檢測與恢復(fù)任務(wù)級別最高,其次是遙測遙控管理任務(wù),最后是姿態(tài)系統(tǒng)I/O任務(wù)。
在姿軌控軟件系統(tǒng)中,所有的任務(wù)都被設(shè)置成可以被中斷的工作方式,以充分發(fā)揮硬件中斷的作用,在一定程度上提高了程序運行的并行度。在任務(wù)調(diào)度上,所有任務(wù)都工作在可剝奪的調(diào)度方式下,即在任何時刻,只要有一個任務(wù)進(jìn)入就緒狀態(tài)而且優(yōu)先級高于正在運行的任務(wù),則立即掛起當(dāng)前的任務(wù),轉(zhuǎn)而執(zhí)行新的任務(wù),直到這個任務(wù)執(zhí)行完成后,再喚醒原來被掛起的低優(yōu)先級任務(wù)。
多任務(wù)調(diào)度管理的仿真實現(xiàn)
采用開發(fā)工具Tornado,運用系統(tǒng)集成仿真器VXSIM來進(jìn)行任務(wù)模塊調(diào)度的仿真。仿真時考慮一種特殊情況:遙測遙控任務(wù)taskTelemetry打斷模式管理任務(wù)taskManager的執(zhí)行,但在遙測遙控任務(wù)執(zhí)行的過程中,系統(tǒng)發(fā)生了故障,則遙測遙控任務(wù)也被故障檢測及系統(tǒng)重構(gòu)任務(wù)taskFaultdeal中斷,待系統(tǒng)故障處理完后恢復(fù)執(zhí)行taskTelemetry任務(wù),完成后再恢復(fù)執(zhí)行工作模式管理任務(wù)。其仿真結(jié)果如圖3所示。
針對衛(wèi)星姿軌控系統(tǒng)的需求,應(yīng)用軟件系統(tǒng)采用縱橫結(jié)合型層次體系結(jié)構(gòu)。通過姿軌控系統(tǒng)工作模式管理模塊對各應(yīng)用軟件任務(wù)模塊的調(diào)用來完成姿軌控應(yīng)用軟件系統(tǒng)的功能。在每執(zhí)行完一個任務(wù)后,自動讀取任務(wù)模塊調(diào)度表中的下一個任務(wù),通過計算,確定下次任務(wù)開始執(zhí)行的時間,并開始計時,時間到達(dá)后,據(jù)飛行任務(wù)模式字等內(nèi)容創(chuàng)建并運行相應(yīng)的姿軌控應(yīng)用任務(wù)模塊。對于需要再次調(diào)用的任務(wù)在運行完后掛起,等下次用時激活運行即可;對于不會再次調(diào)用的任務(wù)則在運行完后刪除,以免占用空間。
根據(jù)衛(wèi)星的工作模式,采用二維結(jié)構(gòu)體數(shù)組Table[][]來定義任務(wù)模塊調(diào)度表。作為數(shù)組元素的構(gòu)體變量包括任務(wù)名taskname、任務(wù)優(yōu)先級taskpri、任務(wù)標(biāo)志位taskflag等,其中任務(wù)名、任務(wù)標(biāo)志位定義為字符串?dāng)?shù)組,如下所示:
struct scheduleTable
{char taskname[12];
int taskpri;
char taskflag[8];
}Table[][];
采用雙重循環(huán)語句來讀寫任務(wù)模塊調(diào)度表,調(diào)用相應(yīng)任務(wù)模塊,從而實現(xiàn)系統(tǒng)工作模式的管理,完成姿態(tài)軌道控制任務(wù)。模塊調(diào)度表定義為modenum×tablenum維數(shù)組,modenum為系統(tǒng)工作模式數(shù),tablenum為當(dāng)前工作模式下需調(diào)用的最大任務(wù)模塊數(shù),程序語句如下:
for (I=1;I<=modenum;I++)
for(J=1;J<=tablenum;J++)
{ /*據(jù)任務(wù)標(biāo)志位進(jìn)行判斷;*/
taskspawn()/taskRestart(taskIdmodule);/*創(chuàng)建或直接啟動任務(wù)Table[][].name;*/
........
taskDelay();
taskSuspend()/taskDelete(taskIdmodule); /*據(jù)需求掛起或刪除運行完畢的當(dāng)前任務(wù);*/
}
仿真程序演示了衛(wèi)星工作模式1調(diào)用module1、module2完成相應(yīng)姿軌控任務(wù),工作模式2調(diào)用module3、module4、module1來實現(xiàn)姿態(tài)軌道控制。module2運行完后釋放表明工作模式1結(jié)束的信號量,再運行taskJudger任務(wù)進(jìn)行工作模式切換,經(jīng)判斷進(jìn)入模式2,調(diào)用module3、module4、module1,模式2結(jié)束再進(jìn)行模式切換。依次類推,循環(huán)完成姿軌控任務(wù)。仿真結(jié)果如圖4所示。
任務(wù)模塊運行順序:工作模式管理模塊→module1→module2→工作模式管理模塊→module3→module4→module1→工作模式管理模塊→module4→.......
結(jié)語
本文設(shè)計的姿軌控計算機軟件系統(tǒng)采用層次模塊化設(shè)計和適合星載計算機系統(tǒng)需求的嵌入式實時操作系統(tǒng),能達(dá)到星載軟件易調(diào)試、移植性強、易維護的目的,可適應(yīng)有限的星載嵌入式控制計算機的計算能力和存儲空間,縮短開發(fā)周期、保證可靠性,模塊結(jié)構(gòu)保證了星載軟件的可靠性和可重構(gòu)性,對衛(wèi)星型號系列化和軟件工程化有重要意義。
- 嵌入式系(13927)
- 結(jié)構(gòu)設(shè)計(10916)
相關(guān)推薦
嵌入式體系結(jié)構(gòu)是怎樣組成的
嵌入式系統(tǒng)體系結(jié)構(gòu)相關(guān)資料推薦
嵌入式系統(tǒng)結(jié)構(gòu)硬件層中間層系統(tǒng)軟件層
嵌入式系統(tǒng)中的軟件有哪些特征?
嵌入式系統(tǒng)基本概念概述
嵌入式系統(tǒng)基本知識
嵌入式系統(tǒng)概述知識梳理
嵌入式系統(tǒng)特點是什么
嵌入式系統(tǒng)的系統(tǒng)該怎么測試和進(jìn)行可靠性評估?
嵌入式系統(tǒng)的軟件部分
嵌入式系統(tǒng)的定義與體系結(jié)構(gòu)
嵌入式系統(tǒng)的應(yīng)用與設(shè)計
嵌入式系統(tǒng)的知識體系
嵌入式系統(tǒng)的設(shè)計過程
嵌入式系統(tǒng)硬件體系結(jié)構(gòu)由哪幾部分組成
嵌入式系統(tǒng)軟件和編程語言
嵌入式系統(tǒng)軟件開發(fā)環(huán)境
嵌入式系統(tǒng)軟件的重要組成部分
嵌入式系統(tǒng)軟件設(shè)計中的數(shù)據(jù)結(jié)構(gòu)].(陸玲,周航慈)
嵌入式系統(tǒng)軟件設(shè)計的原則是什么
嵌入式系統(tǒng)軟件驅(qū)動篇
嵌入式FTP服務(wù)器能實現(xiàn)什么功能?
嵌入式LINUX開發(fā)流程
嵌入式LINUX開發(fā)流程
嵌入式Linux開發(fā)的一般
嵌入式Linux網(wǎng)絡(luò)驅(qū)動程序的體系結(jié)構(gòu)和實現(xiàn)原理是什么
嵌入式處理器的體系結(jié)構(gòu)分類
嵌入式微處理器體系結(jié)構(gòu)
嵌入式操作系統(tǒng)復(fù)習(xí)相關(guān)資料推薦
嵌入式操作系統(tǒng)的相關(guān)資料分享
嵌入式芯片體系結(jié)構(gòu)
軟件無線電結(jié)構(gòu)設(shè)計的器件選擇方法
ARM嵌入式體系結(jié)構(gòu)與接口技術(shù).ARM SoC體系結(jié)構(gòu)(中文版)
ARM服務(wù)器基礎(chǔ)系統(tǒng)體系結(jié)構(gòu)7.1平臺設(shè)計文檔
Menu軟件體系結(jié)構(gòu)的基本概念
[嵌入式系統(tǒng)軟件設(shè)計中的數(shù)據(jù)結(jié)構(gòu)].(陸玲,周航慈).掃描版
《ARM嵌入式體系結(jié)構(gòu)與接口技術(shù)》.pdf -arm嵌入式學(xué)習(xí)資源分享
《ARM嵌入式系統(tǒng)基礎(chǔ)教程》下載
【下載】《 嵌入式系統(tǒng)設(shè)計與實例開發(fā):基于ARM微處理器與μC/OS-2實時操作系統(tǒng)》
【下載】《嵌入式系統(tǒng)設(shè)計與實例開發(fā):基于ARM微處理器與μC/OS-2實時操作系統(tǒng)》
【下載】《嵌入式系統(tǒng)軟件設(shè)計中的數(shù)據(jù)結(jié)構(gòu)》
為何要進(jìn)行嵌入式軟件架構(gòu)設(shè)計?如何設(shè)計?
了解體系結(jié)構(gòu) - 介紹 Arm 體系結(jié)構(gòu)
什么是嵌入式數(shù)控系統(tǒng)軟硬件體系結(jié)構(gòu)?
關(guān)于嵌入式RTDBS的知識點總結(jié)的太棒了
決定嵌入式系統(tǒng)軟件架構(gòu)的因素和架構(gòu)的影響
幾種嵌入式系統(tǒng)軟件開發(fā)的方法
在虛擬機上安裝樹莓派系統(tǒng)后 安裝lvrt2020 報軟件包體系結(jié)構(gòu)(armhf)與本機系統(tǒng)體系結(jié)構(gòu)(i386)不符 要怎么解決
基于嵌入式Linux的BACnet控制器軟件設(shè)計怎么實現(xiàn)?
基于嵌入式模擬器的插樁構(gòu)架怎么實現(xiàn)?
基于嵌入式視頻的多媒體集控系統(tǒng)實現(xiàn)的關(guān)鍵技術(shù)是什么?
如何為4D無線通信設(shè)計基于軟件無線電及變寬度SIMD處理器體系結(jié)構(gòu)?
怎么實現(xiàn)基于Winodws CE的嵌入式網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計?
怎么用C語言去寫嵌入式系統(tǒng)的死循環(huán)呢
怎樣去設(shè)計一種嵌入式系統(tǒng)軟件體系
掌握嵌入式系統(tǒng)軟件設(shè)計方法
操作系統(tǒng)結(jié)構(gòu)設(shè)計
求一種基于μC/OS-II的嵌入式構(gòu)件系統(tǒng)設(shè)計
淺析嵌入式實時系統(tǒng)的體系結(jié)構(gòu)設(shè)計
熟悉嵌入式系統(tǒng)硬件的組成
物聯(lián)網(wǎng)與嵌入式系統(tǒng)體系結(jié)構(gòu)有怎樣的聯(lián)系呢
聊聊嵌入式系統(tǒng)需求分析與體系結(jié)構(gòu)設(shè)計的一些基礎(chǔ)知識
蝶式五軌滑蓋結(jié)構(gòu)設(shè)計與磁動力滑蓋結(jié)構(gòu)設(shè)計的不同之處在哪?
計算機體系結(jié)構(gòu)的相關(guān)資料推薦
請問怎樣去設(shè)計嵌入式軟件構(gòu)件平臺?
采用構(gòu)件技術(shù)實現(xiàn)嵌入式系統(tǒng)復(fù)用軟件設(shè)計
高薪誠聘:嵌入式軟件工程師-有意者請發(fā)送簡歷至我郵箱 -飛凌嵌入式
基于ARM的嵌入式硬件結(jié)構(gòu)設(shè)計

嵌入式系統(tǒng)軟件設(shè)計中的數(shù)據(jù)結(jié)構(gòu)

Agent系統(tǒng)軟件體系結(jié)構(gòu)形式化建模方法

基于構(gòu)件運算的軟件體系結(jié)構(gòu)設(shè)計方法

基于UML 的C4ISR 體系結(jié)構(gòu)設(shè)計過程

集中式位置融合系統(tǒng)軟件體系結(jié)構(gòu)研究

嵌入式DSP處理器的體系結(jié)構(gòu)設(shè)計

嵌入式系統(tǒng)串口通信分層結(jié)構(gòu)設(shè)計與實現(xiàn)

軟件體系結(jié)構(gòu)的分析

一種基于體系結(jié)構(gòu)模板的粗粒度可重構(gòu)SoC設(shè)計方法

嵌入式軟件系統(tǒng)教程之嵌入式軟件體系結(jié)構(gòu)的詳細(xì)資料說明

嵌入式linux_嵌入式系統(tǒng)基礎(chǔ)知識(一): 系統(tǒng)結(jié)構(gòu)和嵌入式Linux

嵌入式系統(tǒng)軟件架構(gòu)設(shè)計

SoC系統(tǒng)中的軟件結(jié)構(gòu)設(shè)計

評論