張梅梅,周向華,陳國平,謝 暉,謝前進(jìn)
(1.中航工業(yè)洪都,江西南昌330024;2.駐320廠軍事代表室,江西南昌330024)
嵌入式系統(tǒng)是隨著計(jì)算機(jī)技術(shù)、微處理器技術(shù)、電子技術(shù)、通信技術(shù)、集成電路技術(shù)的發(fā)展而發(fā)展起來的,越來越廣泛地運(yùn)用于各種場合,包括汽車、航天、航空、軍事裝備等領(lǐng)域。同時(shí),隨著技術(shù)的發(fā)展,F(xiàn)lash電子盤的使用也較為廣泛,以前只是在一般環(huán)境中使用,如今逐漸在實(shí)時(shí)嵌入式環(huán)境中開始使用。本文主要在結(jié)合某個(gè)型號(hào)研發(fā)的基礎(chǔ)上,介紹了在VxWorks操作系統(tǒng)環(huán)境下實(shí)現(xiàn)大容量電子盤數(shù)據(jù)記錄的軟件設(shè)計(jì)。
嵌入式系統(tǒng)是隨著計(jì)算機(jī)技術(shù)、微處理器技術(shù)、電子技術(shù)、通信技術(shù)、集成電路技術(shù)的發(fā)展而發(fā)展起來的。嵌入式系統(tǒng)已成為計(jì)算機(jī)技術(shù)和計(jì)算機(jī)應(yīng)用領(lǐng)域的一個(gè)重要組成部分。根據(jù)國際電氣和電子工程師協(xié)會(huì)(IEEE)的定義:嵌入式系統(tǒng)是控制、監(jiān)視或輔助設(shè)備、機(jī)器和車間運(yùn)行的裝置,這是從應(yīng)用上來定義的。我們國內(nèi)的定義是:嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適合于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗方面要求嚴(yán)格的專用計(jì)算機(jī)系統(tǒng)。
嵌入式系統(tǒng)的發(fā)展在硬件上經(jīng)歷了單板機(jī)和單片機(jī)時(shí)代,軟件經(jīng)歷了無操作系統(tǒng)和實(shí)時(shí)嵌入式操作系統(tǒng)的過程。目前,嵌入式系統(tǒng)廣泛應(yīng)用于制造工業(yè)、過程控制、通信、儀器、儀表、汽車、船舶、航空、航天、軍事裝備、消費(fèi)類產(chǎn)品等領(lǐng)域。
嵌入式系統(tǒng)一般具有如圖1所示的基本結(jié)構(gòu)。
圖1 嵌入式系統(tǒng)的基本結(jié)構(gòu)
嵌入式系統(tǒng)具有下面一些特點(diǎn):
1)嵌入式系統(tǒng)通常是面向用戶、面向產(chǎn)品、面向應(yīng)用,不能獨(dú)立與應(yīng)用自行發(fā)展。
2)嵌入式系統(tǒng)的核心部件——嵌入式微處理器的功耗、體積、成本、處理能力和電磁兼容性等方面均受到應(yīng)用要求的制約,基本上是定制和裁剪的。
3)軟件要求固態(tài)化存貯。
4)軟件代碼高質(zhì)量、高可靠性、高時(shí)效性。
5)軟件采用交叉平臺(tái)開發(fā)。
VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計(jì)開發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng) (RTOS),具有良好的持續(xù)發(fā)展能力、高性能內(nèi)核以及友好的用戶開發(fā)環(huán)境,在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域占有很大的份額。VxWorks操作系統(tǒng)具有以下特點(diǎn):
1)十分靈活,具有多達(dá)1800個(gè)功能強(qiáng)大的應(yīng)用程序接口;
2)適用面廣,可以適用于從最簡單到最復(fù)雜的產(chǎn)品設(shè)計(jì);
3)可靠性高,可以用于星際探索等關(guān)鍵任務(wù);
4)適用性強(qiáng),可以用于所有的流行的CPU平臺(tái),包括68K、PowerPC、CPU32、x86、Mips、i960等,同時(shí)還支持RISC、DSP技術(shù)。
Tornado是與VxWorks操作系統(tǒng)配套、用于軟件交叉開發(fā)的集成開發(fā)環(huán)境,提供了一種高效的開發(fā)實(shí)時(shí)嵌入式系統(tǒng)的方法,同時(shí)具有與目標(biāo)機(jī)環(huán)境關(guān)系不大的特點(diǎn)。Tornado開發(fā)環(huán)境面向各種目標(biāo)機(jī)環(huán)境,不論目標(biāo)機(jī)是資源豐富的還是資源受限的,其主要在主機(jī)端執(zhí)行,并和遠(yuǎn)程端目標(biāo)機(jī)共享基于主機(jī)的動(dòng)態(tài)鏈接器和符號(hào)表。圖2顯示了Tornado主要的主機(jī)組件接口和目標(biāo)機(jī)之間的關(guān)系,通過目標(biāo)服務(wù)器和目標(biāo)機(jī)代理來實(shí)現(xiàn)主機(jī)工具和VxWorks間的通信。
圖2 Tornado結(jié)構(gòu)圖
該系統(tǒng)是某型武器系統(tǒng)的一部分,主要功能是實(shí)現(xiàn)各個(gè)系統(tǒng)之間的傳輸以及數(shù)據(jù)記錄。該系統(tǒng)包含四個(gè)具有各自功能的子系統(tǒng)。其中,中控機(jī)是其核心,作為該軟件的運(yùn)行硬件環(huán)境,控制管理系統(tǒng)內(nèi)部各個(gè)子系統(tǒng)之間有序的協(xié)調(diào)工作,實(shí)現(xiàn)GJB289A、低速RS422和高速RS422等硬件接口的工作,并在工作過程中記錄這些數(shù)據(jù)。
中控機(jī)主要配置參數(shù)如下:
1)CPU:選用Intel MG80486DX 25~33MHz;
2)存貯器:配置了Flash存貯器、SRAM存貯器和EEPROM存貯器;
3)MBI接口:用來實(shí)現(xiàn)GJB289A數(shù)據(jù)總線通信輸出,單通道、雙余度;
4)422接口:用來實(shí)現(xiàn)低速422接口數(shù)據(jù)的通信,4路,速率可以通過軟件設(shè)置,在該系統(tǒng)使用的速率為115.2K;
5)高速422接口:用來實(shí)現(xiàn)高速422接口數(shù)據(jù)的通信,2路,傳輸速率不小于530K;
6)電子盤:用來記錄各種數(shù)據(jù),容量1G,采用Flash芯片,內(nèi)置了升溫電路。
根據(jù)系統(tǒng)的研制要求,該軟件應(yīng)實(shí)現(xiàn)以下功能:1)進(jìn)行外部系統(tǒng)與本系統(tǒng)之間的數(shù)字信息交換:采集下發(fā)的指令,并上報(bào)自身的狀態(tài);
2)采集、解算外部系統(tǒng)下傳的火控?cái)?shù)據(jù)和控制命令,按照系統(tǒng)要求進(jìn)行處理。
3)記錄高速422數(shù)據(jù)、系統(tǒng)之間的通信數(shù)據(jù)以及內(nèi)部通信、狀態(tài)數(shù)據(jù)到電子盤上,數(shù)據(jù)記錄能夠滿足系統(tǒng)多次上電工作記錄的要求;
4)控制內(nèi)部給子系統(tǒng)協(xié)調(diào)有序工作;
5)控制系統(tǒng)內(nèi)部的自檢以及周期性監(jiān)測;
在進(jìn)行該軟件設(shè)計(jì)的時(shí)候,除了要考慮運(yùn)行環(huán)境平臺(tái)以及系統(tǒng)自身的需求外,還需要考慮下面一些性能方面的需求:
1)在軟件中,既存在著傳輸周期為25ms的數(shù)據(jù),又存在傳輸周期為40ms的數(shù)據(jù),在設(shè)計(jì)必須考慮這些數(shù)據(jù)的傳輸周期以及可靠性。
2)軟件設(shè)計(jì)開發(fā)應(yīng)遵照相應(yīng)的硬件結(jié)構(gòu),對(duì)硬件資源開銷約束,時(shí)間余量、存貯余量均不少于30%。
3)由于該系統(tǒng)是一個(gè)多線程任務(wù)系統(tǒng),存在幾個(gè)線程同時(shí)運(yùn)行的情況,因此必須在設(shè)計(jì)時(shí)保證系統(tǒng)的實(shí)時(shí)性。
2.3.1 軟件結(jié)構(gòu)設(shè)計(jì)
根據(jù)嵌入式系統(tǒng)的結(jié)構(gòu)模型、結(jié)合該軟件特點(diǎn),該任務(wù)軟件結(jié)構(gòu)從總體上劃分三層:操作系統(tǒng)、應(yīng)用層、驅(qū)動(dòng)層。其中,操作系統(tǒng)作為該任務(wù)軟件的頂層,負(fù)責(zé)任務(wù)軟件的啟動(dòng)和RAM存儲(chǔ)映像的建立,并控制任務(wù)的調(diào)度;應(yīng)用層完成所有系統(tǒng)功能的實(shí)現(xiàn)和控制管理的處理,應(yīng)用層包括下面一些模塊;驅(qū)動(dòng)層直接負(fù)責(zé)硬件的操作。
2.3.2 軟件模塊設(shè)計(jì)
由于存在著兩種不同周期的數(shù)據(jù)需要傳輸,因此為了滿足該要求,在軟件設(shè)計(jì)的時(shí)候建立兩個(gè)線程:一個(gè)線程為25ms的周期任務(wù),另外一個(gè)線程為40ms的周期任務(wù),同時(shí)將周期任務(wù)切換的中斷時(shí)間設(shè)置為5ms,這樣既可以保證滿足系統(tǒng)的要求,也可以保證任務(wù)周期、減少任務(wù)切換的時(shí)間。
25ms周期任務(wù)為主要工作線程,大部分工作就在該線程中。根據(jù)前面的介紹,VxWorks操作系統(tǒng)提供了多種任務(wù)之間的數(shù)據(jù)交換和同步方式,比如信號(hào)量(包括二進(jìn)制、計(jì)數(shù)、互斥)、消息隊(duì)列、共享內(nèi)存、管道等。由于使用信號(hào)量、消息隊(duì)列等通信方式相對(duì)于使用共享內(nèi)存的方式要多一些時(shí)間開銷,因此在該軟件設(shè)計(jì)時(shí),25ms周期任務(wù)、40ms周期任務(wù)之間主要通過共享內(nèi)存方式來實(shí)現(xiàn)通信。
在進(jìn)行該軟件設(shè)計(jì)的時(shí)候,需要著重考慮將高速數(shù)據(jù)記錄到電子盤的設(shè)計(jì)。由于該軟件運(yùn)行平臺(tái)為單CPU系統(tǒng),需要完成邏輯計(jì)算、RS422傳輸、高速數(shù)據(jù)傳輸和記錄。RS422的傳輸速率為115.2K,需要傳輸?shù)淖止?jié)數(shù)為60幾個(gè),大約花在這方面的時(shí)間為5.874ms;25ms周期任務(wù)和40ms的周期任務(wù)的邏輯計(jì)算等功能的運(yùn)行時(shí)間大約4到5ms,因此用到兩路高速數(shù)據(jù)采集、記錄到電子盤的時(shí)間不能超過7ms,否則就不能滿足系統(tǒng)設(shè)計(jì)的要求,也可能會(huì)影響任務(wù)的實(shí)時(shí)性。而且,由于這是大容量Flash電子盤第一次運(yùn)用在實(shí)時(shí)環(huán)境下,難度比較大。
綜合各種因素考慮,首先排除利用操作系統(tǒng)提供的文件系統(tǒng)進(jìn)行數(shù)據(jù)記錄,改為直接訪問電子盤的物理地址進(jìn)行讀寫,而且使用匯編語言進(jìn)行讀寫函數(shù)的編寫,這是因?yàn)槔梦募到y(tǒng)需要進(jìn)行一系列的處理,比如邏輯地址與物理地址的映射轉(zhuǎn)換,這樣的時(shí)間開銷大,在目前的硬件環(huán)境是不可能保證系統(tǒng)任務(wù)的執(zhí)行時(shí)間。同時(shí),為了滿足系統(tǒng)多次加電記錄不覆蓋數(shù)據(jù)的要求,將電子盤的物理地址從使用上分成幾個(gè)等同的分區(qū),每次上電記錄到不同的分區(qū)上。
其次,改進(jìn)軟件的流程。在傳統(tǒng)的軟件設(shè)計(jì)以及該項(xiàng)目設(shè)計(jì)之初,采用如圖3所示的處理流程。經(jīng)過測試發(fā)現(xiàn),這樣處理時(shí)間開銷也比較大,因?yàn)榇嬖谥容^多的讀寫電子盤命令。
圖3 電子盤讀寫改進(jìn)后的流程
經(jīng)過仔細(xì)考慮和討論,采用如圖4所示的流程。相對(duì)于前面的流程,主要增加了一個(gè)操作系統(tǒng)支持的環(huán)形緩沖區(qū)。在該流程中,在初始化的時(shí)候調(diào)用庫函數(shù)為每路高速數(shù)據(jù)建立一個(gè)環(huán)形緩沖區(qū),大小為20K,比如,ppRngBufA=rngCreate(1024*20)。接著在主工作線程中,通過查詢、搬移數(shù)據(jù)函數(shù)每個(gè)周期去查詢高速RS422接口的寄存器狀態(tài),存貯寄存器半滿將數(shù)據(jù)導(dǎo)入到環(huán)形緩沖區(qū),另一方面,軟件周期查詢環(huán)形緩沖區(qū)的數(shù)據(jù)情況,當(dāng)其狀態(tài)滿足2K,就在主工作線程中調(diào)用寫電子盤函數(shù)(該函數(shù)采用C和匯編語言混合編程)將數(shù)據(jù)寫入到電子盤。
采用該軟件設(shè)計(jì)方式后,經(jīng)過試驗(yàn)和使用的測試驗(yàn)證以及完善修改,能滿足該項(xiàng)目系統(tǒng)的要求,能保證系統(tǒng)的實(shí)時(shí)性。
圖4 電子盤記錄改進(jìn)后的流程
在嵌入式系統(tǒng)中,通過使用該軟件設(shè)計(jì)方法能實(shí)現(xiàn)實(shí)時(shí)環(huán)境下大容量數(shù)據(jù)記錄的功能。在硬件允許的情況下,結(jié)合數(shù)據(jù)回放分析需求,采用文件系統(tǒng),可使數(shù)據(jù)記錄更靈活,回放更方便。
[1]張大波.嵌入式訓(xùn)練系統(tǒng)原理、設(shè)計(jì)與應(yīng)用.北京:機(jī)械工業(yè)出版社,2005,1.
[2]王金剛.基于VxWorks的嵌入式實(shí)時(shí)系統(tǒng)設(shè)計(jì).北京:清華大學(xué)出版社,2004,10.
[3]周啟平,等.VxWorks開發(fā)指南與Tornado使用手冊(cè).北京:中國電力出版社,2004,7.
[4]肖忠炳,等.基于VxWorks的大容量SATA電子盤驅(qū)動(dòng)實(shí)現(xiàn).北京:航空電子技術(shù),2002(1).
[5]邵興.下串口通信程序設(shè)計(jì)與應(yīng)用.北京:電子技術(shù),2011(10).