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

?

一種數(shù)字圖像接收測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2013-10-21 00:54:10李冠林苗克堅(jiān)
電子設(shè)計(jì)工程 2013年13期
關(guān)鍵詞:中間層數(shù)字圖像驅(qū)動(dòng)程序

李冠林,苗克堅(jiān)

(西北工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安 710072)

在航空電子設(shè)備的研制過程中,通常需要對(duì)目標(biāo)設(shè)備進(jìn)行全面的測(cè)試。設(shè)備測(cè)試通過對(duì)目標(biāo)設(shè)備發(fā)送激勵(lì)信號(hào),接收并記錄目標(biāo)設(shè)備的輸出信號(hào)。通過對(duì)反饋信號(hào)的分析,測(cè)試目標(biāo)設(shè)備功能的完整性、邏輯的正確性、整體運(yùn)行性能、以及可靠性和實(shí)時(shí)性。鑒于對(duì)設(shè)備可維護(hù)性的考慮,測(cè)試過程通常要求進(jìn)行全程的測(cè)試數(shù)據(jù)記錄,以便在檢測(cè)到設(shè)備故障時(shí)進(jìn)行現(xiàn)場(chǎng)恢復(fù)和故障定位。用于測(cè)試的設(shè)備通常采用工業(yè)控制計(jì)算機(jī)作為設(shè)備主機(jī),安裝各種總線通信擴(kuò)展卡、信號(hào)采集卡、數(shù)字I/O 卡完成激勵(lì)信號(hào)的輸出和反饋信息的收集[1]。

論文以測(cè)試設(shè)備對(duì)目標(biāo)設(shè)備的圖像板進(jìn)行測(cè)試為背景,提出了一種基于CPCI 總線,以LVDS 接口卡為數(shù)據(jù)接收卡,通過DMA 驅(qū)動(dòng)程序快速的提取接口卡的數(shù)據(jù)并提交給用戶程序的設(shè)計(jì)方案。該方案符合設(shè)計(jì)要求,滿足用戶需求。

1 測(cè)試系統(tǒng)需求分析

為滿足目標(biāo)設(shè)備圖像板測(cè)試的需求,該測(cè)試系統(tǒng)采用CPCI 總線接口的專用測(cè)試卡和LVDS 信號(hào)傳輸模式,使其傳輸速度高和抗干擾性強(qiáng)[2]。由于目標(biāo)設(shè)備發(fā)送圖像數(shù)據(jù)速率快,設(shè)備需要采用DMA 方式傳輸LVDS 接口卡接收到的數(shù)據(jù)。最后,測(cè)試設(shè)備要將接收的數(shù)字圖像數(shù)據(jù)以圖像的形式在用戶界面上顯示出來,便于判斷圖像板的工作狀態(tài)。

要想完成以上的測(cè)試,需要做好以下幾個(gè)方面。首先該測(cè)試系統(tǒng)應(yīng)能夠?qū)y(cè)試設(shè)備進(jìn)行自檢,確保測(cè)試設(shè)備工作是正常;其次DMA 驅(qū)動(dòng)程序能夠正確地接收全部數(shù)字圖像數(shù)據(jù);最后測(cè)試系統(tǒng)能夠?qū)崟r(shí)的顯示圖像。

2 總體設(shè)計(jì)

該測(cè)試系統(tǒng)的系統(tǒng)結(jié)構(gòu)圖如圖1 所示,在對(duì)目標(biāo)設(shè)備的圖像板進(jìn)行測(cè)試時(shí),首先測(cè)試系統(tǒng)對(duì)目標(biāo)設(shè)備加電;接著目標(biāo)設(shè)備的圖像板開始發(fā)送圖像數(shù)據(jù),測(cè)試系統(tǒng)通過LVDS 接口卡接收?qǐng)D像數(shù)據(jù);然后測(cè)試系統(tǒng)通過DMA 驅(qū)動(dòng)程序提取LVDS 接口卡中的數(shù)字圖像數(shù)據(jù);最后測(cè)試系統(tǒng)處理圖像數(shù)據(jù),同時(shí)把圖像顯示到用戶圖像區(qū)。

圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure diagram of test system

3 測(cè)試系統(tǒng)硬件設(shè)計(jì)

測(cè)試系統(tǒng)硬件主要由工控機(jī)、LVDS 接口卡、電源板和目標(biāo)設(shè)備組成。系統(tǒng)硬件結(jié)構(gòu)圖如圖2 所示。工控機(jī)是設(shè)備的核心,包含控制器和機(jī)箱。LVDS 接口卡主要負(fù)責(zé)數(shù)字圖像的接收,其CPCI 總線接口的實(shí)現(xiàn)采用PLX 的協(xié)議芯片PCI-9054,該芯片實(shí)現(xiàn)CPCI 總線與局部總線的橋接,并提供對(duì)DMA 方式傳輸數(shù)據(jù)的支持。電源板主要負(fù)責(zé)為目標(biāo)設(shè)備提供高效、穩(wěn)定的+12 V 電源。

圖2 系統(tǒng)硬件結(jié)構(gòu)圖Fig.2 Structure diagram of the hardware system

4 測(cè)試系統(tǒng)軟件設(shè)計(jì)

測(cè)試系統(tǒng)軟件部分采用分層設(shè)計(jì)的思想,從上到下依次為:用戶層、中間層和DMA 驅(qū)動(dòng)層,具體結(jié)構(gòu)框架如圖3所示。

圖3 系統(tǒng)軟件設(shè)計(jì)結(jié)構(gòu)圖Fig.3 Schematic diagram of the software test system

用戶層負(fù)責(zé)數(shù)字圖像的處理和實(shí)時(shí)顯示,該層使用中間層提供的服務(wù)接口,對(duì)底層的圖像數(shù)據(jù)進(jìn)行提?。恢虚g層為用戶層提供服務(wù),使用戶只能看見中間層提供的服務(wù)而無法看見底層的操作,底層的操作對(duì)用戶來講是透明的,同時(shí)該層功能的實(shí)現(xiàn)需要DMA 驅(qū)動(dòng)層提供服務(wù)接口;DMA 驅(qū)動(dòng)層為中間層提供服務(wù)接口,負(fù)責(zé)將圖像板發(fā)送的數(shù)字圖像數(shù)據(jù)從LVDS 接口卡中提取出來,通知中間層取數(shù)。軟件設(shè)計(jì)的流程圖如圖4 所示。

4.1 DMA 驅(qū)動(dòng)程序模塊

DMA 驅(qū)動(dòng)程序以WDM 驅(qū)動(dòng)框架為模版,開發(fā)環(huán)境為Microsoft DDK+VS2008。

4.1.1 WDM 驅(qū)動(dòng)模型

WDM 驅(qū)動(dòng)模型層次關(guān)系圖如圖5 所示,圖中左邊是一個(gè)設(shè)備對(duì)象堆棧,每一層驅(qū)動(dòng)程序各對(duì)應(yīng)一個(gè)設(shè)備對(duì)象(PDO)。設(shè)備對(duì)象是操作系統(tǒng)幫助軟件管理硬件而創(chuàng)建的一種數(shù)據(jù)結(jié)構(gòu)。圖中處于最底層的是物理設(shè)備對(duì)象,中間層是功能設(shè)備對(duì)象(FDO),在FDO 的上下層可能有一些過濾設(shè)備對(duì)象[3]。

在單個(gè)硬件的驅(qū)動(dòng)程序中,不同位置的驅(qū)動(dòng)程序扮演了不同的角色??偩€驅(qū)動(dòng)程序管理計(jì)算機(jī)與PDO 代表的設(shè)備連接;功能驅(qū)動(dòng)程序管理了FDO 代表的設(shè)備;過濾驅(qū)動(dòng)程序用于監(jiān)視和修改IRP 流。對(duì)硬件板卡的每個(gè)操作轉(zhuǎn)換為相應(yīng)的I/O 請(qǐng)求包(IRP)。IRP 通常先被送到設(shè)備堆棧的最頂層驅(qū)動(dòng)程序,然后逐漸傳到下層的驅(qū)動(dòng)程序。每一層驅(qū)動(dòng)程序都根據(jù)IRP 攜帶的內(nèi)容決定如何處理IRP[3-5]。

4.1.2 DMA 驅(qū)動(dòng)層

圖4 軟件設(shè)計(jì)數(shù)據(jù)流圖Fig.4 Flow chart of the software design

圖5 WDM 設(shè)備對(duì)象和驅(qū)動(dòng)程序的層次關(guān)系圖Fig.5 Level diagram of the WDM device object and driver

Windows 操作系統(tǒng)提供了適配器對(duì)象來描述設(shè)備上的DMA 特征,并用它來控制訪問共享資源,如系統(tǒng)DMA 通道和映射寄存器。驅(qū)動(dòng)程序要控制DMA,需要先創(chuàng)建一個(gè)適配器對(duì)象,適配器對(duì)象中有一個(gè)指針,指向一個(gè)DmaOperations的結(jié)構(gòu),該結(jié)構(gòu)包含了所有需要的DMA 相關(guān)的函數(shù),如函數(shù)AllocateCommonBuffer 等。

DMA 驅(qū)動(dòng)程序首先從操作系統(tǒng)中獲取相關(guān)的硬件資源,包括LVDS 接口卡映射的內(nèi)存地址和DMA 相關(guān)中斷資源;然后在函數(shù)StartDevice 中調(diào)用函數(shù)IoGetDmaAdapter 獲取適配 器 對(duì) 象pDmaAdapterObject,通 過pDmaAdapterObject->DmaOperations->AllocateCommonBuffer 函數(shù)申請(qǐng)公共的DMA數(shù)據(jù)接收緩沖區(qū);當(dāng)中斷發(fā)生時(shí),驅(qū)動(dòng)程序判斷中斷源,如果是DMA 中斷,調(diào)用函數(shù)Dma_Transfer 啟動(dòng)DMA 傳輸LVDS接口卡中的圖像數(shù)據(jù);當(dāng)DMA 傳輸圖像數(shù)據(jù)結(jié)束中斷產(chǎn)生后,驅(qū)動(dòng)程序?qū)⒔邮盏臄?shù)據(jù)放在本層的循環(huán)緩沖區(qū)中,通知中間層到緩沖區(qū)中提取數(shù)據(jù)。

在啟動(dòng)DMA 進(jìn)行數(shù)據(jù)傳輸前,需要設(shè)定DMA 數(shù)據(jù)的傳輸方向、傳輸起始地址、傳輸長(zhǎng)度和傳輸通道等相關(guān)信息,最后打開DMA 通道進(jìn)行數(shù)據(jù)傳輸。以下是Dma_Transfer 函數(shù)的核心代碼。

4.2 中間層

中間層提供的接口函數(shù)有:打開設(shè)備接口函數(shù)OpenDeviceDMA、關(guān)閉設(shè)備接口函數(shù)CloseDeviceDMA、使能中斷接口函數(shù)EnableInterruptDMA、中斷回調(diào)例程掛接接口函數(shù)ConnectIntDMA、中斷例程卸載接口函數(shù)DisConnectIntDMA、接收DMA 數(shù)據(jù)接口函數(shù)RevLVDSData和相關(guān)的對(duì)LVDS 接口卡寄存器操作的接口函數(shù)。

4.3 用戶層

用戶層軟件是在VS2008 環(huán)境下編寫的基于MFC 框架的應(yīng)用程序,負(fù)責(zé)從中間層提取圖像數(shù)據(jù),并將其處理保存,在界面上實(shí)時(shí)顯示圖像。

用戶層首先將中斷回調(diào)函數(shù)掛接到中間層,當(dāng)驅(qū)動(dòng)層有DMA 數(shù)據(jù)傳輸結(jié)束中斷產(chǎn)生,驅(qū)動(dòng)層將通知中間層,中間層接到通知后,提取驅(qū)動(dòng)層的圖像數(shù)據(jù)存放到其循環(huán)存儲(chǔ)區(qū)。中間層調(diào)用中斷回調(diào)函數(shù),通知用戶層,用戶層接到通知后,從中間層將圖像數(shù)據(jù)提取出來,并對(duì)圖像數(shù)據(jù)進(jìn)行處理和實(shí)時(shí)顯示。

由于用戶層還要處理其它事務(wù),往往會(huì)使提取圖像數(shù)據(jù)的速率與DMA 傳輸數(shù)據(jù)的速率不匹配,在驅(qū)動(dòng)層和中間層都申請(qǐng)一塊循環(huán)緩沖隊(duì)列來存儲(chǔ)DMA 傳輸?shù)臄?shù)據(jù),這樣就不會(huì)出現(xiàn)由于用戶層還未完全取走圖像數(shù)據(jù),DMA 傳輸過來的數(shù)據(jù)就把未及時(shí)取走的數(shù)據(jù)覆蓋掉的問題。待用戶層提取數(shù)據(jù)完成后,直接調(diào)用圖像數(shù)據(jù)解析函數(shù),根據(jù)圖像板數(shù)據(jù)格式,將圖像數(shù)據(jù)從數(shù)據(jù)幀中解析出來,然后調(diào)用Invalidate()函數(shù)使圖像客戶顯示區(qū)失效,對(duì)圖像進(jìn)行重繪。為了消除重繪過程中產(chǎn)生的閃屏問題,采用了雙緩沖機(jī)制來繪制圖像[6]。在圖像繪制結(jié)束后,將圖像數(shù)據(jù)保存到固定的文件中。若測(cè)試不合格,該測(cè)試系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行分析,查找故障原因。

5 實(shí)驗(yàn)應(yīng)用

測(cè)試系統(tǒng)測(cè)試目標(biāo)設(shè)備圖像板的過程為:打開測(cè)試軟件圖像板測(cè)試模塊,給目標(biāo)設(shè)備上電。等待大約3 s 的時(shí)間,界面上會(huì)出現(xiàn)特定的圖像。程序的部分操作界面如圖6 所示,該測(cè)試系統(tǒng)對(duì)顯示的圖像進(jìn)行判定以檢驗(yàn)圖像板工作是否正常。

圖6 測(cè)試系統(tǒng)部分界面Fig.6 Interface chart of testing system

6 結(jié)束語

測(cè)試系統(tǒng)采用裝有LVDS 接口卡的CPCI 工控機(jī)作為硬件平臺(tái),軟件采用分層的設(shè)計(jì)思想,提高了系統(tǒng)的可擴(kuò)展性和可維護(hù)性,便于二次開發(fā)。該測(cè)試系統(tǒng)采用了友好的界面設(shè)計(jì),目前已經(jīng)交付用戶使用。實(shí)際應(yīng)用情況表明,該測(cè)試系統(tǒng)提高了測(cè)試效率,具有人機(jī)交互界面友好、簡(jiǎn)單、測(cè)試準(zhǔn)確、穩(wěn)定性高的特點(diǎn),達(dá)到了設(shè)計(jì)目標(biāo)。

[1]劉艷霞,苗克堅(jiān),陸寅.基PCI的智能化仿真通訊存儲(chǔ)板的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與制,2011,13(9):1184-1186.LIU Yan-xia,MIAO Ke-jian,LU Yin.The design of intelligent simulation communication memory board based on PCI[J].Computer Measurement &Control,2011,13(9):1184-1186.

[2]張威,苗克堅(jiān),陸寅.基LVDS的多路SPI的PCI板卡設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2012,20(3):790-792.ZHANG Wei,MIAO Ke-jian,LU Yin.The design and implement of PCI card of multi-channel SPI based on LVDS[J].Computer Measurement &Control,2012,20(3):790-792.

[3]郭艷,苗克堅(jiān).Windows 2000下WDM 驅(qū)動(dòng)程序的研究與開發(fā)[J].計(jì)算機(jī)工程,2006,32(22):266-268.GUO Yan,MIAO Ke-jian.Research and design of WDM driver under windows 2000 [J].Computer Engineering,2006,32(22):266-268.

[4]魏超,苗克堅(jiān),楊成果.基于CPCI的ARINC429總線通信卡的WDM 驅(qū)動(dòng)程序開發(fā)[J].計(jì)算機(jī)工程與科學(xué),2008,30(10):156-159.WEI Chao,MIAO Ke-jian,YANG Cheng-guo.Development of the WDM driver for the ARINC429 bus communication card based on CPCI [J].Computer Engineering &Science,2008,30(10):156-159.

[5]張帆,史彩成.Windows驅(qū)動(dòng)開發(fā)詳解[M].北京:電子工業(yè)出版社,2010.

[6]明日科技,孫秀梅,王雪,等.Visaul C++典型模塊與項(xiàng)目實(shí)戰(zhàn)大全[M].北京:電子工業(yè)出版社,2012.

猜你喜歡
中間層數(shù)字圖像驅(qū)動(dòng)程序
ARGUS-100 藝術(shù)品鑒證數(shù)字圖像比對(duì)系統(tǒng)
鎳基高溫合金TLP擴(kuò)散焊中間層材料研究進(jìn)展
焊接(2016年8期)2016-02-27 13:05:10
B含量對(duì)IC10合金TLP焊接用中間層材料及接頭組織的影響
焊接(2016年6期)2016-02-27 13:04:55
基于塊效應(yīng)測(cè)度的JPEG數(shù)字圖像盲取證
數(shù)字圖像修復(fù)在圖像壓縮上的應(yīng)用
基于DirectShow的便攜式X射線數(shù)字圖像采集的實(shí)現(xiàn)
極區(qū)夏季中間層頂塵埃顆粒的生長(zhǎng)及數(shù)密度分布
柵格中間層數(shù)據(jù)在數(shù)字地形分析中的應(yīng)用
驅(qū)動(dòng)程序更新與推薦
驅(qū)動(dòng)程序更新與推薦
连江县| 济宁市| 乐业县| 汶上县| 灌阳县| 富锦市| 莎车县| 额尔古纳市| 轮台县| 呼和浩特市| 盐津县| 萝北县| 汪清县| 泰安市| 新野县| 资源县| 上饶县| 常宁市| 宁城县| 甘德县| 渑池县| 池州市| 青浦区| 佛教| 新蔡县| 湖州市| 昭苏县| 遂平县| 阿城市| 陆良县| 凉山| 洞头县| 平南县| 西和县| 宁晋县| 漠河县| 古田县| 永春县| 丰台区| 顺平县| 冕宁县|