国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Ardence RTX的1553B驅(qū)動(dòng)程序開(kāi)發(fā)

2014-09-26 03:48金相男
電子設(shè)計(jì)工程 2014年2期
關(guān)鍵詞:驅(qū)動(dòng)程序板卡實(shí)時(shí)性

金相男

(中國(guó)空空導(dǎo)彈研究院 河南 洛陽(yáng) 471009)

飛行控制組件是空空導(dǎo)彈的重要組成部分。隨著空空導(dǎo)彈地位的提高,飛行控制組件的重要性也日益凸顯。其作用主要是控制導(dǎo)彈的飛行,并將導(dǎo)彈飛行狀態(tài)信息傳遞到其他組件,協(xié)作確保導(dǎo)彈按一定軌跡運(yùn)行并最終正確擊中目標(biāo)。

飛行控制組件的測(cè)試系統(tǒng)不僅僅強(qiáng)調(diào)結(jié)果的正確性,更重要的是要求得到結(jié)果的時(shí)間,即實(shí)時(shí)性。實(shí)時(shí)系統(tǒng)主要應(yīng)用于過(guò)程控制、數(shù)據(jù)采集、通信、多媒體信息處理等對(duì)時(shí)間敏感的場(chǎng)合。飛控組件性能測(cè)試系統(tǒng)對(duì)實(shí)時(shí)性的要求非常高,要求在確定的、有限的時(shí)間內(nèi)完成一次測(cè)試周期,包括大量數(shù)據(jù)的采集,同時(shí)對(duì)采集到得數(shù)據(jù)進(jìn)行計(jì)算,并根據(jù)計(jì)算的結(jié)果輸出控制信號(hào),有時(shí)還要對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和顯示。針對(duì)測(cè)控系統(tǒng)對(duì)實(shí)時(shí)性的要求,從實(shí)時(shí)性、穩(wěn)定性和易用性等方面對(duì)幾種提高系統(tǒng)實(shí)時(shí)性的方法進(jìn)行了比較,選取了Ardence RTX(Real-Time Extension)來(lái)對(duì)Windows系統(tǒng)進(jìn)行實(shí)時(shí)擴(kuò)展。而目前采用的1553B還不支持RTX,所以該設(shè)計(jì)方案主要針對(duì)1553B進(jìn)行相應(yīng)的RTX驅(qū)動(dòng)開(kāi)發(fā)。

1 硬件部分

飛控組件測(cè)試系統(tǒng)主要包括總控計(jì)算機(jī)系統(tǒng)(CTS)、遙測(cè)計(jì)算機(jī)系統(tǒng) (BTS)、信號(hào)調(diào)理單元 (SCU)等5個(gè)部分,1553B就用于總控計(jì)算機(jī)系統(tǒng)的載機(jī)電氣接口部分,與其他板卡配合實(shí)現(xiàn)簡(jiǎn)單的火控算法,模擬載機(jī)對(duì)飛控系統(tǒng)發(fā)送飛行任務(wù)等。

1553B總線是飛機(jī)內(nèi)部時(shí)分制命令/響應(yīng)多路復(fù)用數(shù)據(jù)總線,是由美國(guó)軍方專(zhuān)為飛機(jī)上設(shè)備定制的一種信息傳輸總線標(biāo)準(zhǔn)。1553B總線系統(tǒng)主要由三部分組成:總線控制器BC、遠(yuǎn)程終端RT、數(shù)據(jù)總線Data Bus。工作頻率1Mb/s,半雙工工作方式。

1553B有3個(gè)類(lèi)型的終端,即總線上唯一被安排為執(zhí)行建立和啟動(dòng)數(shù)據(jù)傳輸任務(wù)的終端—總線控制器(BC)、用戶(hù)子系統(tǒng)到數(shù)據(jù)總線上的接口—遠(yuǎn)程終端(RT)、監(jiān)控總線上信息傳輸以完成對(duì)總線上數(shù)據(jù)源進(jìn)行記錄和分析的—總線監(jiān)控器(MT)。遠(yuǎn)程終端在總線控制器的控制下提取數(shù)據(jù)或吸收數(shù)據(jù),總線監(jiān)控器本身不參與總線通信。

1553B的實(shí)時(shí)性好,數(shù)據(jù)傳輸速率比一般的通訊網(wǎng)高,總線下率高,而且有特有的方式命令以及差錯(cuò)控制措施(反饋重傳糾錯(cuò)方法),確保了數(shù)據(jù)的完整性。由于其價(jià)格相對(duì)較高,所以多用于軍事而非普通工業(yè)。

2 軟件部分

飛控系統(tǒng)屬于半實(shí)物仿真的實(shí)時(shí)測(cè)控系統(tǒng),實(shí)時(shí)測(cè)控系統(tǒng)需要硬件支持,更依賴(lài)軟件系統(tǒng),而在軟件中最關(guān)鍵的是實(shí)時(shí)操作系統(tǒng),滿足一些基本的要求:滿足時(shí)間期限、多任務(wù)、搶占調(diào)度以及快速靈活的任務(wù)間的通信與同步[2]。由于Windows操作系統(tǒng)在線程調(diào)度、中斷處理和定時(shí)器精度等方面體現(xiàn)出來(lái)的弱實(shí)時(shí)性,所以單純的利用Windows操作系統(tǒng)已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足測(cè)控系統(tǒng)對(duì)實(shí)時(shí)性的要求,因此本設(shè)計(jì)將采用對(duì)Windows系統(tǒng)進(jìn)行實(shí)時(shí)擴(kuò)展的方式來(lái)滿足實(shí)時(shí)要求。通過(guò)對(duì)系統(tǒng)結(jié)構(gòu)、開(kāi)發(fā)難易度以及開(kāi)發(fā)成本等方面考慮最終選擇了Ardence RTX對(duì)Windows進(jìn)行擴(kuò)展。

2.1 軟件開(kāi)發(fā)環(huán)境

RTX (Real Time Extension)程序開(kāi)發(fā)平臺(tái)選擇VisualStudio2005+Ardence RTX7.1。

RTX是美國(guó)Ardence公司開(kāi)發(fā)的基于Windows操作系統(tǒng)的硬實(shí)時(shí)解決方案,其充分利用了Windows良好的可擴(kuò)展性體系結(jié)構(gòu),增加了一個(gè)實(shí)時(shí)的子系統(tǒng)RTSS修改和擴(kuò)展了Windows系統(tǒng)提供的硬件抽象層(HAL,Hardware Abstract Layers)。RTSS提供了實(shí)時(shí)運(yùn)行環(huán)境和響應(yīng)的編程接口,其滿足:

1)任何時(shí)間其優(yōu)先級(jí)都高于Windows。

2)執(zhí)行實(shí)時(shí)任務(wù)時(shí),能夠延遲Windows的中斷和錯(cuò)誤。

3)執(zhí)行實(shí)時(shí)任務(wù)時(shí),能夠處理實(shí)時(shí)中斷。

RTX的體系結(jié)構(gòu)如圖1所示。

RTX被實(shí)現(xiàn)為一套庫(kù)的集合,提供了一套被乘坐RTWinAPI的標(biāo)準(zhǔn)動(dòng)態(tài)庫(kù),可以被標(biāo)準(zhǔn)Win32環(huán)境和RTSS環(huán)境調(diào)用。Windows服務(wù)控制管理器直接將RTX進(jìn)程和動(dòng)態(tài)鏈接庫(kù)(DLL)的可執(zhí)行映像裝入內(nèi)核的非分頁(yè)內(nèi)存中,確保在運(yùn)行過(guò)程中不被置換出內(nèi)存,保證了對(duì)外部事件響應(yīng)的確定性。

當(dāng)運(yùn)行RTSS線程時(shí),所有Windows控制的中斷都被屏蔽掉。當(dāng)Windows線程請(qǐng)求設(shè)置中斷屏蔽時(shí),作為實(shí)際管理中斷屏蔽的軟件,HAL確保沒(méi)有任何RTSS中斷被屏蔽。RTSS執(zhí)行自己的基于搶占的線程調(diào)度,并支持128級(jí)線程優(yōu)先級(jí)。

Windows提供的計(jì)時(shí)器的定時(shí)周期為1000微秒 (1毫秒)。RT-HAL將其降到了100微秒并且提供了同步(與計(jì)時(shí)器)的時(shí)鐘,其最小分辨率為100納秒。

2.2 硬件環(huán)境配置

圖1 RTX體系結(jié)構(gòu)Fig.1 RTX structure

因?yàn)橛布ぷ髟赗TX環(huán)境下,所以要將硬件導(dǎo)入到RTX。首先安裝板卡的Windows驅(qū)動(dòng),在RTX Properties的Hardware標(biāo)簽頁(yè)下選擇設(shè)備設(shè)置,在Windows設(shè)備中右鍵點(diǎn)擊1553B的板卡選擇“Add RTX INF Support”,應(yīng)用即可。在RTX環(huán)境下,設(shè)備要獨(dú)占中斷號(hào)以保證其正常運(yùn)行。

2.3 驅(qū)動(dòng)程序設(shè)計(jì)

2.3.1 驅(qū)動(dòng)程序框架

安裝好VS2005之后安裝RTX7.1,RTX程序工程的建立直接嵌入到Visual Studio的開(kāi)發(fā)環(huán)境中,如圖2所示,多出了3個(gè)選項(xiàng),選擇Rtx Device Driver根據(jù)向?qū)Ъ纯缮沈?qū)動(dòng)程序框架,RTX的包含文件和庫(kù)文件的路徑已默認(rèn)設(shè)置好,生成的文件類(lèi)型為*.rtss。

通過(guò)RTX驅(qū)動(dòng)生成向?qū)Э焖偕傻腜CI設(shè)備驅(qū)動(dòng)程序框架提供函數(shù)接口有:

1)設(shè)備管理函數(shù)

使用DeviceSearch()函數(shù)通過(guò)VenderID和DeviceID在總線上輪詢(xún)查找設(shè)備,若找到則獲得設(shè)備的總線號(hào)。使用DeviceInit()函數(shù)獲得設(shè)備的硬件資源如中斷號(hào)、內(nèi)存、輸入輸出I/O和DMA等。使用DeviceClean()函數(shù)清除設(shè)備并釋放硬件資源。

圖2 VisualStudio2005工程選項(xiàng)卡Fig.2 VisualStudio2005 project tab control

2)中斷管理函數(shù)

當(dāng)系統(tǒng)產(chǎn)生中斷后,程序首先進(jìn)入DeviceISR,首先判斷是不是該設(shè)備的中斷,如果不是則傳到下一個(gè)共享該中斷號(hào)的設(shè)備,如果是則進(jìn)入DeviceIST處理中斷,注意,處理時(shí)先要禁止該板卡的中斷然后查看獲得的中斷類(lèi)型,釋放信號(hào)通知相應(yīng)的線程進(jìn)行相應(yīng)的中斷處理,然后清中斷并使能板卡中斷繼續(xù)工作。

在中斷處理的過(guò)程中使用到的函數(shù)包括:DisableInterrupts OnChip ()、EnableInterruptsOnChip ()、IsMyInterrups()等。

2.3.2 驅(qū)動(dòng)內(nèi)部自定義函數(shù)

為了滿足用戶(hù)需求,將自定義一些結(jié)構(gòu)體和函數(shù)用于對(duì)硬件進(jìn)行初始化、讀寫(xiě)配置、寄存器訪問(wèn)、本地控件訪問(wèn)等。該部分函數(shù)不向用戶(hù)開(kāi)放,僅內(nèi)部調(diào)用。以設(shè)置為BC模式時(shí)使用的消息結(jié)構(gòu)體為例[5]:

結(jié)構(gòu)體中包含了數(shù)據(jù)傳輸方向、傳輸方式等基本信息,利用結(jié)構(gòu)體將這些信息進(jìn)行簡(jiǎn)單封裝可使開(kāi)發(fā)更加簡(jiǎn)潔。

其他相關(guān)函數(shù)例如:寫(xiě)9054本地寄存器函數(shù)void WriteLocalReg_1553B (USHORT offset, UINT32 regVal)、 讀PCI配置空間void ReadPciConfigReg_1553B (USHORT offset,UINT32*pRegVal, DATA_WIDTH_MODE dataWidth)、 軟件復(fù)位芯片void SoftReset_1553B()等。

如果讀寫(xiě)數(shù)據(jù)量比較大的情況下,可以采用DMA傳輸方式。軟件上配合DMA操作需要以下步驟:選擇DMA通道;填寫(xiě)DMA模式控制寄存器和傳輸相關(guān)的寄存器包括PCI地址、LOCAL地址、傳輸數(shù)據(jù)量大小、傳輸方向等信息;啟動(dòng)DMA傳輸。相關(guān)的函數(shù)例如:DMA控制與配置模塊BOOLEAN DMACtrl_1553B (PLX9054_DMA_CMD cmd, UINT32*pData)、初始化設(shè)備結(jié)構(gòu)體中描述DMA的元素BOOLEAN DMAInit_1553B ()、DMA 塊 讀 寫(xiě) BOOLEAN DMARead WriteBlock_1553B (CH_NUM_1553B chNum, UINT32 dwLocalAddr,UINT8*buffer, BOOL IsLocal2PCI)等。

2.3.3 用戶(hù)接口函數(shù)

軟件上需要實(shí)現(xiàn)的接口主要包括[6]:打開(kāi)關(guān)閉板卡、工作模式設(shè)置、填充相關(guān)消息、啟動(dòng)停止發(fā)送、讀取狀態(tài)字等,例如int OpenCard_1553B()、int CloseCard_1553B()等。 用戶(hù)只要完成應(yīng)用層面的工作,需要關(guān)心驅(qū)動(dòng)是如何實(shí)現(xiàn)數(shù)據(jù)傳遞的。

2.4 RTX驅(qū)動(dòng)開(kāi)發(fā)中設(shè)備共享中斷問(wèn)題及解決方法

2.4.1 Windows設(shè)備與RTX設(shè)備

由于RTX技術(shù)說(shuō)明文檔中明確指出RTX設(shè)備必須獨(dú)占中斷號(hào),所以是不能與Windows設(shè)備共享中斷,如果出現(xiàn)中斷號(hào)沖突,RTX設(shè)備的圖標(biāo)會(huì)帶有嘆號(hào)表示不能整成使用,只能將與其沖突中斷號(hào)的Windows設(shè)備停用并刷新重啟。

2.4.2 RTX設(shè)備之間

1)打開(kāi)RTX Property中的設(shè)備管理器,找到RTX下的設(shè)備,如果兩個(gè)或以上的設(shè)備共享了中斷號(hào),其前面的圖標(biāo)均有嘆號(hào)表示沒(méi)有獲得有效的中斷資源,雙擊打開(kāi),顯示了板卡的一些資源信息,設(shè)置Disposition,默認(rèn)的是Device Exclusive表示獨(dú)占中斷資源,需要改成Shared By RTX將該設(shè)備設(shè)成中斷共享的,如圖3所示。確定后需更新驅(qū)動(dòng)程序并重啟計(jì)算機(jī),共享設(shè)備可正常工作了;

2)在打開(kāi)板卡的代碼中RtxAttachInterruptsEx()函數(shù)有一個(gè)參數(shù)BOOLEAN ShareVector,設(shè)置為T(mén)RUE;

3)中斷服務(wù)例程ISR和中斷服務(wù)線程IST:

RtAttachInterruptsEx()函數(shù)為每個(gè)中斷向量掛接ISR和IST,在指明了該中斷是共享中斷時(shí),RTX會(huì)將所有共享該中斷的ISR組成一個(gè)函數(shù)鏈,這樣每次發(fā)生該中斷時(shí)都會(huì)依據(jù)ISR將這個(gè)鏈調(diào)用一遍,僅當(dāng)是本設(shè)備產(chǎn)生中斷才被處理。進(jìn)入ISR后首先調(diào)用IsMyInterrupt函數(shù)讀取PLX9054中斷寄存器的值,查看DMA中斷和Local中斷是否被使能,如果都沒(méi)有表示不是本設(shè)備產(chǎn)生的中斷,ISR返回PassToNextDevice將該中斷傳遞給鏈表中的下一個(gè)ISR處理,如果是本設(shè)備產(chǎn)生的中斷,則ISR返回CallInterruptThread進(jìn)入IST處理。在IST中先要向PLX9054中斷寄存器中相應(yīng)位置零禁止該設(shè)備其它中斷的產(chǎn)生,然后根據(jù)中斷類(lèi)型進(jìn)行相應(yīng)處理,最后向相應(yīng)寄存器中寫(xiě)入數(shù)值清中斷,再使能設(shè)備中斷繼續(xù)工作。流程如圖3所示。

圖3 共享中斷流程圖Fig.3 Flow chart of share interrupt

3 結(jié) 論

論文研究的1553B驅(qū)動(dòng)程序開(kāi)發(fā)是基于Windows+RTX環(huán)境的,實(shí)現(xiàn)了在Windows操作系統(tǒng)中嵌入RTX實(shí)時(shí)子系統(tǒng),有效地將Windows系統(tǒng)強(qiáng)大的界面開(kāi)發(fā)能力和RTX的實(shí)時(shí)性能結(jié)合起來(lái),并使系統(tǒng)結(jié)構(gòu)簡(jiǎn)化緊湊,為今后在Windows系統(tǒng)平臺(tái)下實(shí)現(xiàn)實(shí)時(shí)測(cè)控奠定了良好的基礎(chǔ)。

[1]任傳俊.基于RTX的MATLAB實(shí)時(shí)仿真技術(shù)研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科技大學(xué),2006.

[2]宮厚良.基于RTX和LabVIEW的實(shí)時(shí)多任務(wù)測(cè)控系統(tǒng)的研究[D].重慶:重慶大學(xué),2008.

[3]張蕾.基于RTX的全軟件數(shù)控系統(tǒng)的研究[D].秦皇島:燕山大學(xué),2006.

[4]Stankovic J A,Ramamritham K.What is predictability for real-time systems[J].Real-Time Systems,1990,2(4):247-254.

[5]胡靖宇.實(shí)時(shí)軟件開(kāi)發(fā)技術(shù)的研究與實(shí)現(xiàn) [D].西安:西北工業(yè)大學(xué),2002.

[6]張沖,張科,呂梅柏.空空導(dǎo)彈飛控軟件實(shí)時(shí)仿真系統(tǒng)研究[J].系統(tǒng)仿真學(xué)報(bào),2008,20(23):6387-6390.

ZHANG Chong,ZHANG Ke,LV Mei-bai.Research of realtime simulation system for air-to-air missile’s flight control software[J].Journal of System Simulation,2008,20 (23):6387-6390.

猜你喜歡
驅(qū)動(dòng)程序板卡實(shí)時(shí)性
基于PCI9054的多總線通信板卡的研制
基于FPGA的多通道模擬量采集/輸出PCI板卡的研制
計(jì)算機(jī)硬件設(shè)備驅(qū)動(dòng)程序分析
航空電子AFDX與AVB傳輸實(shí)時(shí)性抗干擾對(duì)比
計(jì)算機(jī)控制系統(tǒng)實(shí)時(shí)性的提高策略
一種基于光纖數(shù)據(jù)傳輸?shù)亩喟蹇ㄜ浖绦驘龑?xiě)技術(shù)
一種通用模擬量及開(kāi)關(guān)量信號(hào)采集板卡的設(shè)計(jì)
一種車(chē)載Profibus總線系統(tǒng)的實(shí)時(shí)性分析
基于MPC8280的CPU單元與內(nèi)部總線驅(qū)動(dòng)程序設(shè)計(jì)
妙用鼠標(biāo)驅(qū)動(dòng)