張梅梅,周向華,陳國平,謝 暉,謝前進
(1.中航工業洪都,江西南昌330024;2.駐320廠軍事代表室,江西南昌330024)
嵌入式系統是隨著計算機技術、微處理器技術、電子技術、通信技術、集成電路技術的發展而發展起來的,越來越廣泛地運用于各種場合,包括汽車、航天、航空、軍事裝備等領域。同時,隨著技術的發展,Flash電子盤的使用也較為廣泛,以前只是在一般環境中使用,如今逐漸在實時嵌入式環境中開始使用。本文主要在結合某個型號研發的基礎上,介紹了在VxWorks操作系統環境下實現大容量電子盤數據記錄的軟件設計。
嵌入式系統是隨著計算機技術、微處理器技術、電子技術、通信技術、集成電路技術的發展而發展起來的。嵌入式系統已成為計算機技術和計算機應用領域的一個重要組成部分。根據國際電氣和電子工程師協會(IEEE)的定義:嵌入式系統是控制、監視或輔助設備、機器和車間運行的裝置,這是從應用上來定義的。我們國內的定義是:嵌入式系統是以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適合于應用系統對功能、可靠性、成本、體積、功耗方面要求嚴格的專用計算機系統。
嵌入式系統的發展在硬件上經歷了單板機和單片機時代,軟件經歷了無操作系統和實時嵌入式操作系統的過程。目前,嵌入式系統廣泛應用于制造工業、過程控制、通信、儀器、儀表、汽車、船舶、航空、航天、軍事裝備、消費類產品等領域。
嵌入式系統一般具有如圖1所示的基本結構。

圖1 嵌入式系統的基本結構
嵌入式系統具有下面一些特點:
1)嵌入式系統通常是面向用戶、面向產品、面向應用,不能獨立與應用自行發展。
2)嵌入式系統的核心部件——嵌入式微處理器的功耗、體積、成本、處理能力和電磁兼容性等方面均受到應用要求的制約,基本上是定制和裁剪的。
3)軟件要求固態化存貯。
4)軟件代碼高質量、高可靠性、高時效性。
5)軟件采用交叉平臺開發。
VxWorks操作系統是美國WindRiver公司于1983年設計開發的一種嵌入式實時操作系統 (RTOS),具有良好的持續發展能力、高性能內核以及友好的用戶開發環境,在嵌入式實時操作系統領域占有很大的份額。VxWorks操作系統具有以下特點:
1)十分靈活,具有多達1800個功能強大的應用程序接口;
2)適用面廣,可以適用于從最簡單到最復雜的產品設計;
3)可靠性高,可以用于星際探索等關鍵任務;
4)適用性強,可以用于所有的流行的CPU平臺,包括68K、PowerPC、CPU32、x86、Mips、i960等,同時還支持RISC、DSP技術。
Tornado是與VxWorks操作系統配套、用于軟件交叉開發的集成開發環境,提供了一種高效的開發實時嵌入式系統的方法,同時具有與目標機環境關系不大的特點。Tornado開發環境面向各種目標機環境,不論目標機是資源豐富的還是資源受限的,其主要在主機端執行,并和遠程端目標機共享基于主機的動態鏈接器和符號表。圖2顯示了Tornado主要的主機組件接口和目標機之間的關系,通過目標服務器和目標機代理來實現主機工具和VxWorks間的通信。

圖2 Tornado結構圖
該系統是某型武器系統的一部分,主要功能是實現各個系統之間的傳輸以及數據記錄。該系統包含四個具有各自功能的子系統。其中,中控機是其核心,作為該軟件的運行硬件環境,控制管理系統內部各個子系統之間有序的協調工作,實現GJB289A、低速RS422和高速RS422等硬件接口的工作,并在工作過程中記錄這些數據。
中控機主要配置參數如下:
1)CPU:選用Intel MG80486DX 25~33MHz;
2)存貯器:配置了Flash存貯器、SRAM存貯器和EEPROM存貯器;
3)MBI接口:用來實現GJB289A數據總線通信輸出,單通道、雙余度;
4)422接口:用來實現低速422接口數據的通信,4路,速率可以通過軟件設置,在該系統使用的速率為115.2K;
5)高速422接口:用來實現高速422接口數據的通信,2路,傳輸速率不小于530K;
6)電子盤:用來記錄各種數據,容量1G,采用Flash芯片,內置了升溫電路。
根據系統的研制要求,該軟件應實現以下功能:1)進行外部系統與本系統之間的數字信息交換:采集下發的指令,并上報自身的狀態;
2)采集、解算外部系統下傳的火控數據和控制命令,按照系統要求進行處理。
3)記錄高速422數據、系統之間的通信數據以及內部通信、狀態數據到電子盤上,數據記錄能夠滿足系統多次上電工作記錄的要求;
4)控制內部給子系統協調有序工作;
5)控制系統內部的自檢以及周期性監測;
在進行該軟件設計的時候,除了要考慮運行環境平臺以及系統自身的需求外,還需要考慮下面一些性能方面的需求:
1)在軟件中,既存在著傳輸周期為25ms的數據,又存在傳輸周期為40ms的數據,在設計必須考慮這些數據的傳輸周期以及可靠性。
2)軟件設計開發應遵照相應的硬件結構,對硬件資源開銷約束,時間余量、存貯余量均不少于30%。
3)由于該系統是一個多線程任務系統,存在幾個線程同時運行的情況,因此必須在設計時保證系統的實時性。
2.3.1 軟件結構設計
根據嵌入式系統的結構模型、結合該軟件特點,該任務軟件結構從總體上劃分三層:操作系統、應用層、驅動層。其中,操作系統作為該任務軟件的頂層,負責任務軟件的啟動和RAM存儲映像的建立,并控制任務的調度;應用層完成所有系統功能的實現和控制管理的處理,應用層包括下面一些模塊;驅動層直接負責硬件的操作。
2.3.2 軟件模塊設計
由于存在著兩種不同周期的數據需要傳輸,因此為了滿足該要求,在軟件設計的時候建立兩個線程:一個線程為25ms的周期任務,另外一個線程為40ms的周期任務,同時將周期任務切換的中斷時間設置為5ms,這樣既可以保證滿足系統的要求,也可以保證任務周期、減少任務切換的時間。
25ms周期任務為主要工作線程,大部分工作就在該線程中。根據前面的介紹,VxWorks操作系統提供了多種任務之間的數據交換和同步方式,比如信號量(包括二進制、計數、互斥)、消息隊列、共享內存、管道等。由于使用信號量、消息隊列等通信方式相對于使用共享內存的方式要多一些時間開銷,因此在該軟件設計時,25ms周期任務、40ms周期任務之間主要通過共享內存方式來實現通信。
在進行該軟件設計的時候,需要著重考慮將高速數據記錄到電子盤的設計。由于該軟件運行平臺為單CPU系統,需要完成邏輯計算、RS422傳輸、高速數據傳輸和記錄。RS422的傳輸速率為115.2K,需要傳輸的字節數為60幾個,大約花在這方面的時間為5.874ms;25ms周期任務和40ms的周期任務的邏輯計算等功能的運行時間大約4到5ms,因此用到兩路高速數據采集、記錄到電子盤的時間不能超過7ms,否則就不能滿足系統設計的要求,也可能會影響任務的實時性。而且,由于這是大容量Flash電子盤第一次運用在實時環境下,難度比較大。
綜合各種因素考慮,首先排除利用操作系統提供的文件系統進行數據記錄,改為直接訪問電子盤的物理地址進行讀寫,而且使用匯編語言進行讀寫函數的編寫,這是因為利用文件系統需要進行一系列的處理,比如邏輯地址與物理地址的映射轉換,這樣的時間開銷大,在目前的硬件環境是不可能保證系統任務的執行時間。同時,為了滿足系統多次加電記錄不覆蓋數據的要求,將電子盤的物理地址從使用上分成幾個等同的分區,每次上電記錄到不同的分區上。
其次,改進軟件的流程。在傳統的軟件設計以及該項目設計之初,采用如圖3所示的處理流程。經過測試發現,這樣處理時間開銷也比較大,因為存在著比較多的讀寫電子盤命令。

圖3 電子盤讀寫改進后的流程
經過仔細考慮和討論,采用如圖4所示的流程。相對于前面的流程,主要增加了一個操作系統支持的環形緩沖區。在該流程中,在初始化的時候調用庫函數為每路高速數據建立一個環形緩沖區,大小為20K,比如,ppRngBufA=rngCreate(1024*20)。接著在主工作線程中,通過查詢、搬移數據函數每個周期去查詢高速RS422接口的寄存器狀態,存貯寄存器半滿將數據導入到環形緩沖區,另一方面,軟件周期查詢環形緩沖區的數據情況,當其狀態滿足2K,就在主工作線程中調用寫電子盤函數(該函數采用C和匯編語言混合編程)將數據寫入到電子盤。
采用該軟件設計方式后,經過試驗和使用的測試驗證以及完善修改,能滿足該項目系統的要求,能保證系統的實時性。

圖4 電子盤記錄改進后的流程
在嵌入式系統中,通過使用該軟件設計方法能實現實時環境下大容量數據記錄的功能。在硬件允許的情況下,結合數據回放分析需求,采用文件系統,可使數據記錄更靈活,回放更方便。
[1]張大波.嵌入式訓練系統原理、設計與應用.北京:機械工業出版社,2005,1.
[2]王金剛.基于VxWorks的嵌入式實時系統設計.北京:清華大學出版社,2004,10.
[3]周啟平,等.VxWorks開發指南與Tornado使用手冊.北京:中國電力出版社,2004,7.
[4]肖忠炳,等.基于VxWorks的大容量SATA電子盤驅動實現.北京:航空電子技術,2002(1).
[5]邵興.下串口通信程序設計與應用.北京:電子技術,2011(10).