韓新麗
(中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西西安,710065)
一種基于VxWorks的高速實(shí)時(shí)數(shù)據(jù)記錄系統(tǒng)的設(shè)計(jì)
韓新麗
(中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西西安,710065)
本文針對(duì)大規(guī)模數(shù)據(jù)記錄系統(tǒng)對(duì)嵌入式系統(tǒng)實(shí)現(xiàn)的實(shí)時(shí)性需求,設(shè)計(jì)了一種采用VxWorks操作系統(tǒng)的嵌入式實(shí)現(xiàn)方案,該方案采用模塊化的設(shè)計(jì)架構(gòu),利用VxWorks靈活的多任務(wù)調(diào)度機(jī)制和任務(wù)間通信機(jī)制,建立了一種多任務(wù)間通信模型。通過(guò)對(duì)任務(wù)功能的合理劃分和任務(wù)優(yōu)先級(jí)的設(shè)置,該嵌入式系統(tǒng)克服了數(shù)據(jù)記錄過(guò)程中數(shù)據(jù)丟失、數(shù)據(jù)覆蓋的問(wèn)題,提高了數(shù)據(jù)記錄的實(shí)時(shí)性和可靠性要求。
數(shù)據(jù)記錄;信號(hào)量;環(huán)形緩沖區(qū);消息隊(duì)列
隨著電子信息產(chǎn)業(yè)的迅速發(fā)展,數(shù)據(jù)記錄系統(tǒng)越來(lái)越廣泛地應(yīng)用在各個(gè)領(lǐng)域,例如導(dǎo)彈跟蹤、高分辨雷達(dá)成像、高能物理、電波天文學(xué)以及航空航天測(cè)試等. 這些應(yīng)用領(lǐng)域要求數(shù)據(jù)必須快速、可靠地記錄在存儲(chǔ)設(shè)備中,用作后續(xù)的分析和使用.
由于數(shù)據(jù)規(guī)模的擴(kuò)大,以往的單任務(wù)操作系統(tǒng)或以時(shí)間片輪轉(zhuǎn)調(diào)度為基礎(chǔ)的多任務(wù)操作系統(tǒng)無(wú)法滿足系統(tǒng)的實(shí)時(shí)性需求,因此需要采用一個(gè)多任務(wù)硬實(shí)時(shí)的嵌入式操作系統(tǒng)。VxWorks因其良好的實(shí)時(shí)性、可靠性被廣泛的應(yīng)用于通信、軍事、航空、航天等領(lǐng)域。
本文為了解決數(shù)據(jù)記錄系統(tǒng)高實(shí)時(shí)性難于實(shí)現(xiàn)的問(wèn)題,設(shè)計(jì)了一種基于VxWorks的嵌入式方案。本文介紹了系統(tǒng)功能要求,分析了多任務(wù)管理與任務(wù)優(yōu)先級(jí)設(shè)置,建立了多任務(wù)間的數(shù)據(jù)通信模型,最后給出了嵌入式接口實(shí)現(xiàn)。
本數(shù)據(jù)記錄系統(tǒng)的功能要求如下:
a.記錄4路HB6096總線信號(hào);
b.記錄4路差分模擬量輸入(AFTI);
c.記錄4路高速串口信號(hào),為差分曼徹斯特碼編碼,RS422電平信號(hào);
d.接收1路RS422信號(hào);
e.輸出4個(gè)通道,每個(gè)通道6路15V地/開(kāi)離散量;
f.提供1路28V/開(kāi)離散量;
g.提供可快速拔插的大容量固態(tài)電子盤(pán),可連續(xù)記錄外設(shè)數(shù)據(jù)超過(guò)8h;
h.提供串行及網(wǎng)絡(luò)調(diào)試接口;
i.具有瞬時(shí)掉電保護(hù)功能;
j.數(shù)據(jù)以FAT32的文件形式存于電子盤(pán)上;
l.自動(dòng)判斷電子盤(pán)容量,刪除老舊文件。
為了滿足本系統(tǒng)的功能需求,本系統(tǒng)的硬件包括機(jī)箱、母板、CPU模塊、I/O模塊、記錄模塊和電源模塊等部件。硬件外部接口關(guān)系圖如圖1所示。
CPU模塊采用PowerPC系列的MPC8245處理器,64MB SDRAM, 128MB 用戶Flash,4個(gè)32位定時(shí)器。
I/O模塊功能如下:
a.提供HB6096總線接口,總線速率可軟件配置為100kbps;
b.提供差分模擬量輸入及A/D轉(zhuǎn)換電路;
c.提供4通道、每通道6路的15V開(kāi)/地離散量輸出;
d.提供1路28V/開(kāi)路離散量輸出;
e.底板總線為L(zhǎng)BE總線。
為滿足容量要求,記錄模塊提供了1塊16GB的IDE總線接口電子盤(pán)。
電源模塊的輸入為28V直流電源,為各模塊正常工作提供+5V、±15V直流電壓。
數(shù)據(jù)記錄系統(tǒng)軟件主要由VxWorks操作系統(tǒng)和應(yīng)用軟件組成。VxWorks操作系統(tǒng)包括:操作系統(tǒng)內(nèi)核、BSP(板級(jí)支持包)、網(wǎng)絡(luò)系統(tǒng)、文件系統(tǒng)、I/O系統(tǒng),應(yīng)用軟件包括配置程序、數(shù)據(jù)處理程序和掉電處理程序。
圖1 數(shù)據(jù)記錄系統(tǒng)外部接口關(guān)系圖
配置程序用于設(shè)定系統(tǒng)參數(shù)、檢測(cè)串口及網(wǎng)口,檢測(cè)電子盤(pán)容量、獲取系統(tǒng)時(shí)間。
數(shù)據(jù)處理程序主要包括高速串口記錄任務(wù)、HB6096記錄任務(wù)、差分模擬量記錄任務(wù)、命令處理任務(wù),每個(gè)任務(wù)由相應(yīng)的輔助定時(shí)器來(lái)管理,定時(shí)器周期性地采集不同通道的數(shù)據(jù),記錄任務(wù)實(shí)時(shí)地將數(shù)據(jù)以文件形式記錄到電子盤(pán),采用數(shù)據(jù)類(lèi)型、目標(biāo)機(jī)的啟動(dòng)次數(shù)及當(dāng)前時(shí)間作為記錄文件的名字,這樣方便地面回放及分析,日志文件記錄系統(tǒng)運(yùn)行期間的異常情況。
掉電處理程序主要負(fù)責(zé)目標(biāo)機(jī)掉電時(shí)安全地關(guān)閉文件。
該系統(tǒng)實(shí)現(xiàn)的難點(diǎn)在于如何滿足實(shí)時(shí)采集數(shù)據(jù)并正確地記錄下來(lái),因此系統(tǒng)設(shè)計(jì)的重點(diǎn)就放在如何提高系統(tǒng)的實(shí)時(shí)性及可靠性方面。
3.1 多任務(wù)管理與優(yōu)先級(jí)
VxWorks支持兩種任務(wù)調(diào)度算法,第1種為基于任務(wù)優(yōu)先級(jí)的搶占式調(diào)度算法,第2種為時(shí)間片輪轉(zhuǎn)調(diào)度算法。由于本系統(tǒng)數(shù)據(jù)采集的實(shí)時(shí)性有較高的要求,故采用搶占式調(diào)度算法。該算法的基本思想是具有更高優(yōu)先級(jí)的任務(wù)一旦進(jìn)入ready狀態(tài),將搶占當(dāng)前運(yùn)行任務(wù)的CPU資源,進(jìn)行上下文切換后進(jìn)入運(yùn)行狀態(tài)。該算法的好處是可以滿足實(shí)時(shí)調(diào)度的需求,以更快的速度響應(yīng)具有更高優(yōu)先級(jí)的任務(wù)。其缺點(diǎn)是在多個(gè)任務(wù)具有相同優(yōu)先級(jí)的情況下,如果當(dāng)前任務(wù)不被阻塞,它將一直占用CPU資源,造成其它同優(yōu)先級(jí)或低優(yōu)先級(jí)的任務(wù)不能執(zhí)行,所以采用這種算法時(shí)要特別注意任務(wù)的結(jié)構(gòu)設(shè)計(jì)。
在嵌入式實(shí)時(shí)多任務(wù)設(shè)計(jì)中,關(guān)鍵是如何保證軟件的實(shí)時(shí)性。本系統(tǒng)設(shè)計(jì)中,實(shí)時(shí)性的保證主要包括多任務(wù)的劃分、多任務(wù)的優(yōu)先級(jí)設(shè)置、多任務(wù)間的通信方式設(shè)計(jì)和中斷處理程序的設(shè)計(jì)幾個(gè)方面。其中任務(wù)的合理劃分和任務(wù)優(yōu)先級(jí)的合理設(shè)置對(duì)系統(tǒng)的實(shí)時(shí)性起著至關(guān)重要的作用。
通過(guò)文中對(duì)系統(tǒng)功能的描述,將不同類(lèi)型的數(shù)據(jù)劃分為不同的任務(wù)來(lái)處理,并建立相應(yīng)的寫(xiě)文件任務(wù)。高速串口數(shù)據(jù)量大,采集周期為25ms, HB6096數(shù)據(jù)量較小,采集周期為12.5ms,差分模擬量數(shù)據(jù)量最小,但采集周期為2ms,在調(diào)試過(guò)程中將高速串口的優(yōu)先級(jí)設(shè)為最高,HB6096次之,差分模擬量的優(yōu)先級(jí)最小,這樣任務(wù)間配合比較合理。鑒于差分模擬量的采集周期最短,所以采集20次差分模擬量數(shù)據(jù)后才進(jìn)行一次寫(xiě)文件操作,這樣可避免頻繁操作電子盤(pán)引起采集數(shù)據(jù)受影響。
3.2 多任務(wù)間通信模型的設(shè)計(jì)
VxWorks操作系統(tǒng)支持多種任務(wù)間通信方式,主要包括信號(hào)量、消息隊(duì)列、共享內(nèi)存、管道、信號(hào)等,不同的通信方式有不同的適用條件和響應(yīng)速度。在任務(wù)的互斥與同步操作中,信號(hào)量是最快的一種通信機(jī)制。另外,消息隊(duì)列作為一種任務(wù)之間的高級(jí)通信機(jī)制,提供了完善的響應(yīng)式交互信息方式,在單CPU系統(tǒng)中廣泛應(yīng)用。在本數(shù)據(jù)記錄系統(tǒng)中,為了達(dá)到更加快捷高效的任務(wù)間信息傳遞,本系統(tǒng)結(jié)合使用了信號(hào)量和消息隊(duì)列,同時(shí)還應(yīng)用了共享內(nèi)存的環(huán)形緩沖區(qū)機(jī)制來(lái)進(jìn)行任務(wù)間的數(shù)據(jù)交互。
同類(lèi)型數(shù)據(jù)的接收任務(wù)和寫(xiě)文件任務(wù)可能會(huì)同時(shí)訪問(wèn)全局變量或共享內(nèi)存,這時(shí)如果沒(méi)有一定的保護(hù)機(jī)制可能會(huì)產(chǎn)生意想不到的后果。本系統(tǒng)應(yīng)用二進(jìn)制信號(hào)量來(lái)協(xié)調(diào)任務(wù)間的同步和互斥。采用這種響應(yīng)速度最快的互斥與同步手段也加強(qiáng)了系統(tǒng)響應(yīng)的實(shí)時(shí)性。當(dāng)任務(wù)需要訪問(wèn)全局變量或共享內(nèi)存時(shí),首先通過(guò)semTake()操作來(lái)獲取一個(gè)信號(hào)量。這里將semTake()的等待時(shí)間設(shè)為WAIT_FOREVER,即任務(wù)若獲取不到該信號(hào)量則永久阻塞。
基于本系統(tǒng)分層化、模塊化的思想,處于不同層中任務(wù)的工作狀態(tài)是相互獨(dú)立的,因此需要進(jìn)行數(shù)據(jù)交互時(shí)只需要操作消息隊(duì)列即可。驅(qū)動(dòng)層將數(shù)據(jù)加上幀頭組成數(shù)據(jù)后將其作為消息發(fā)送到消息隊(duì)列中,應(yīng)用層的接收任務(wù)一直等待接收下層的消息,一旦消息隊(duì)列中有未處理的消息,則馬上處理。這種通信方式可以有效的避免由于外部接收數(shù)據(jù)過(guò)快或者上層寫(xiě)文件較慢造成的數(shù)據(jù)覆蓋問(wèn)題,起到了數(shù)據(jù)緩沖處理的作用。對(duì)于控制幀信息來(lái)說(shuō),將其優(yōu)先級(jí)設(shè)置為高于普通的數(shù)據(jù)幀,這樣新收到的控制幀信息可以插在消息隊(duì)列的頭部,提高了系統(tǒng)對(duì)關(guān)鍵控制幀的響應(yīng)速度,這同時(shí)提高了系統(tǒng)的實(shí)時(shí)性。
嵌入式系統(tǒng)的板載RAM資源非常寶貴,在本系統(tǒng)中,數(shù)據(jù)幀的最大長(zhǎng)度為514個(gè)字節(jié),同時(shí)由于數(shù)據(jù)收發(fā)頻率非常快,所以數(shù)據(jù)處理需要占較多內(nèi)存空間。由于采用的消息隊(duì)列通信機(jī)制在進(jìn)行消息傳遞時(shí)采用的是內(nèi)存拷貝機(jī)制,這樣當(dāng)消息隊(duì)列中的消息長(zhǎng)度過(guò)大時(shí)會(huì)影響隊(duì)列的操作速度和占用較多的內(nèi)存資源,進(jìn)而會(huì)影響系統(tǒng)的實(shí)時(shí)性。
本系統(tǒng)采用的解決方案是在驅(qū)動(dòng)層和應(yīng)用層各設(shè)置一個(gè)環(huán)形緩沖區(qū),驅(qū)動(dòng)層將數(shù)據(jù)放入環(huán)形緩沖區(qū),然后將信息幀地址和信息幀長(zhǎng)度作為消息發(fā)送到消息隊(duì)列中。應(yīng)用層由于寫(xiě)電子盤(pán)的速度比接收數(shù)據(jù)的速度慢,所以接收任務(wù)將數(shù)據(jù)先放在環(huán)形緩沖區(qū)中,再以信號(hào)量的方式通知寫(xiě)任務(wù)將數(shù)據(jù)寫(xiě)入電子盤(pán)中,這種方法有效地提高了數(shù)據(jù)的處理速度及系統(tǒng)響應(yīng)的實(shí)時(shí)性。
實(shí)際編程過(guò)程中,由于每個(gè)數(shù)據(jù)采集任務(wù)都是采用輔助定時(shí)器控制采集周期,定時(shí)器計(jì)時(shí)結(jié)束后發(fā)送一個(gè)中斷信號(hào),調(diào)用中斷服務(wù)處理函數(shù)發(fā)起采集數(shù)據(jù)操作,中斷處理不能占用太多時(shí)間,否則會(huì)引起數(shù)據(jù)丟失,所以定時(shí)器中斷中只是調(diào)用semGive()系統(tǒng)函數(shù)發(fā)送一個(gè)信號(hào)量,由發(fā)起任務(wù)具體處理采集記錄操作。
3.3 數(shù)據(jù)通信接口
嵌入式系統(tǒng)最終要與外部進(jìn)行數(shù)據(jù)交互,在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中,I/O操作的可靠性和實(shí)時(shí)性也是系統(tǒng)設(shè)計(jì)的重要指標(biāo)。
VxWorks的I/O系統(tǒng)可以提供簡(jiǎn)單、統(tǒng)一、與設(shè)備無(wú)關(guān)的接口,應(yīng)用程序通過(guò)打開(kāi)指定的文件來(lái)操作I/O設(shè)備。一個(gè)指定的文件可以是一個(gè)非結(jié)構(gòu)化的原始設(shè)備,如:一個(gè)串行通信通道或一個(gè)任務(wù)間管道。本系統(tǒng)中的RS422就采用這種驅(qū)動(dòng),將串口的操作視為對(duì)一個(gè)文件的操作,不用關(guān)心設(shè)備或程序驅(qū)動(dòng)的細(xì)節(jié),因此該驅(qū)動(dòng)相對(duì)開(kāi)發(fā)起來(lái)容易一些。
高速串口驅(qū)動(dòng)、HB6096驅(qū)動(dòng)及差分模擬量驅(qū)動(dòng)由于數(shù)據(jù)量比較大,采用繞過(guò)操作系統(tǒng),直接訪問(wèn)設(shè)備的驅(qū)動(dòng)程序,這樣可以高效訪問(wèn)設(shè)備,減少了系統(tǒng)開(kāi)銷(xiāo)和操作時(shí)間。
由于用戶要求將采集的數(shù)據(jù)以FAT32的文件格式來(lái)存儲(chǔ),所以電子盤(pán)驅(qū)動(dòng)需以塊設(shè)備的驅(qū)動(dòng)程序來(lái)開(kāi)發(fā),是本系統(tǒng)中比較復(fù)雜的驅(qū)動(dòng)。在VxWorks中,文件系統(tǒng)是作為驅(qū)動(dòng)程序掛接到I/O系統(tǒng)中,應(yīng)用程序?qū)υO(shè)備的I/O操作都是由I/O系統(tǒng)傳遞給文件系統(tǒng),文件系統(tǒng)來(lái)訪問(wèn)真正的電子盤(pán)驅(qū)動(dòng)程序。
本文提出了一種基于VxWorks實(shí)時(shí)操作系統(tǒng)的協(xié)同數(shù)據(jù)記錄嵌入式方案,設(shè)計(jì)了數(shù)據(jù)記錄系統(tǒng)的整體框架。該系統(tǒng)充分利用了VxWorks的多任務(wù)支持,采用信號(hào)量和消息隊(duì)列保證任務(wù)間的同步和通信,利用任務(wù)優(yōu)先級(jí)的高低來(lái)保證對(duì)外部響應(yīng)的實(shí)時(shí)性。通過(guò)合理的任務(wù)劃分和任務(wù)優(yōu)先級(jí)設(shè)置,該嵌入式系統(tǒng)基本滿足數(shù)據(jù)記錄的實(shí)時(shí)性和可靠性需求,同時(shí),該設(shè)計(jì)方法對(duì)其它嵌入式應(yīng)用也具有一定的借鑒作用。
[1]閆得杰.基于VxWorks 的多任務(wù)程序設(shè)計(jì)及通信管理[J].光機(jī)電信息,2009, 27(9):64-66
[2]王永亮, 李秀娟. 嵌入式多任務(wù)程序設(shè)計(jì)[J]. 電子科技,2010, 23(1): 94-96.
[3]陳智育, 溫嚴(yán)軍, 陳琪等. VxWorks 程序開(kāi)發(fā)實(shí)踐[M]. 北京:人民郵電出版社, 2004-05: 107-127.
[4]楊揚(yáng).VxWorks 下數(shù)據(jù)采集卡驅(qū)動(dòng)程序開(kāi)發(fā)[J].現(xiàn)代電子技術(shù),2008,31(7):113-114.
[5]李方敏,VxWorks高級(jí)程序設(shè)計(jì),清華大學(xué)出版社,2004年5月
[6]周啟平,張楊,VxWorks下設(shè)備驅(qū)動(dòng)程序及BSP開(kāi)發(fā)指南,中國(guó)電力出版社,2004年9月
A Design of High Speed Realtime Data Recorded Software Based on VxWorks
Han Xinli
(Xi’an Aeronautics Computing Technique Research Institute, AVIC,Xi’an Shanxi,710065)
In order to fulfill the high real-time requirement that the mass datas recorded software needs in practical design , a scheme is proposed by using an embedded system based on VxWorks. This embedded system takes advantage of the excellent real-time performance, multitask scheduling technology ofVxWorks and the modularized and layered designing concept. A model which based on the multitask communication mechanism is established. By reasonable division of the task function and the priority settings of the tasks, the system overcame problem that data is lost and overlaid during recording , the system designed designed implements the high real-time and reliability requirement in mass datas recorded software.
data recording;binary semaphore;ring buffer;message queue