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