亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Win7+RTX2012的LVDS遙測采集卡驅(qū)動程序開發(fā)

        2018-05-17 10:37:36王少虎劉亞斌
        電子設計工程 2018年9期
        關鍵詞:信號量共享內(nèi)存采集卡

        王少虎,劉亞斌

        (北京航空航天大學自動化科學與電氣工程學院,北京100191)

        飛控組件綜合測試系統(tǒng)主要用以對某型號產(chǎn)品的飛控組件的電氣性能、功能、時序進行全面調(diào)試與測試,并隔離、定位和分析故障,完成常溫、高低溫性能測試、振動和沖擊測試。飛控組件與載機、導引頭、舵機等通訊,不斷發(fā)出代表自身工作狀態(tài)的LVDS遙測信息[1]。測試系統(tǒng)中的LVDS遙測采集卡需實時采集LVDS遙測信息,并存儲、顯示。Win?dows系統(tǒng)實時性差[2],在采集LVDS遙測信息過程中時常會出現(xiàn)丟幀、誤碼現(xiàn)象。本測試系統(tǒng)要求在有限的、確定的時間內(nèi)實現(xiàn)一個周期數(shù)據(jù)的采集。鑒于Windows7良好的人機交互界面、強大的圖形顯示和數(shù)據(jù)處理功能[3],并考慮到各類實時系統(tǒng)或開發(fā)工具的實時性能、開發(fā)難度、軟件可移植性、成本等因素,選取RTX2012對Windows 7系統(tǒng)進行硬實時擴展[3],進行LVDS遙測采集卡的RTX驅(qū)動程序開發(fā)。

        1 LVDS遙測采集卡概述

        LVDS遙測采集卡主要用于接收飛控組件發(fā)出的LVDS遙測信號[4],主要特性有:PXI總線接口;一幀255個遙測數(shù)據(jù),每6 ms中斷一次,完成一幀數(shù)據(jù)上傳;接收字數(shù)可軟件設置,數(shù)據(jù)接收時板卡自動存儲,至少可記錄十分鐘遙測數(shù)據(jù),且不丟幀;傳輸速率32 MB/s;傳輸距離≥5 m。

        LVDS遙測信號只含有1路數(shù)據(jù)信號和1路時鐘信號[5]。本采集卡主要有兩大功能模塊:LVDS遙測信號收發(fā)模塊、PXI/CPCI總線接口模塊。兩個模塊以一片F(xiàn)PGA(型號為EP1C12Q240)為核心,利用FPGA實現(xiàn)硬件總體時序邏輯控制、LVDS遙測信號的采集/發(fā)送功能。硬件總體設計框架如圖1所示。

        圖1 LVDS遙測采集卡硬件結(jié)構(gòu)框架

        2 RTX2012概述

        RTX2012(Real Time Extension 2012)是 Interval Zero公司的重要產(chǎn)品,通過對Windows的硬件抽象層進行硬實時擴展[6],設計實現(xiàn)實時任務的管理、調(diào)度。它沒有對Windows系統(tǒng)進行修改或封裝[7],支持部分win32API函數(shù),并擁有一套RTAPI實時函數(shù)(中斷處理函數(shù)為RTAPI獨有)[8],方便平臺間共享、移植軟件程序。

        RTX2012實時子系統(tǒng)采用搶占式優(yōu)先級[9],分127個線程優(yōu)先級,RTSS線程優(yōu)先于所有的Windows線程[10];實時特性達微秒級,保證上下文線程切換,使得在亞微妙范圍內(nèi)的線程優(yōu)先級更高;完全支持多核CPU,可指定RTX在獨占的核上運行;能精確控制IRQ、I/O、內(nèi)存等[11]。

        RTX2012支持PCI/PCI-E總線上基于消息、線性的中斷[12],使得配置Win 7系統(tǒng)信息變得簡單;RTX2012可以通過信號量、互斥體以及共享內(nèi)存等高速IPC對象和同步機制[13],實現(xiàn)RTX與Windows之間數(shù)據(jù)交換。其定時器時鐘頻率為100ns,最低定時器周期為 100 μs,并支持實時以太網(wǎng)、USB 通訊[14]。RTX2012支持Microsoft Visual Studio 2010/2008/2005,使得不同版本開發(fā)工具開發(fā)出的軟件程序可以較好兼容。

        3 RTX驅(qū)動程序開發(fā)

        利用Visual Studio2010+RTX2012開發(fā)RTX驅(qū)動,通過VS2010中“RTX Device Driver”選項按向?qū)?chuàng)建驅(qū)動程序框架,添加對應功能函數(shù)代碼,經(jīng)編譯、運行,最后生成.rtss文件。

        3.1 RTX驅(qū)動程序基本函數(shù)

        利用向?qū)Э焖賱?chuàng)建的RTX驅(qū)動程序框架,主要提供了設備管理和中斷管理方面的基本函數(shù)[15],供開發(fā)人員調(diào)用以完成對設備的初始化、清除設備資源、中斷處理等功能。

        DeviceSearch函數(shù)用于設備查找;DeviceInit函數(shù)用于獲取板卡的內(nèi)存空間、中斷號等硬件資源;RtGetBusDataByOffset函數(shù)用于訪問9054配置空間,獲取本地寄存器和存儲空間內(nèi)存與中斷信息[16];Rt?TranslateBusAddress和RtMapMemory函數(shù)將物理地址映射為虛擬地址,用基地址加上偏移量,RTX驅(qū)動程序就可讀寫本地寄存器或內(nèi)存空間[17];Device?Cleanup用于釋放板卡硬件資源。RtCreateShared?Memory和RtOpenSharedMemory用于創(chuàng)建、打開共享內(nèi)存;RtCloseHandle用于釋放共享內(nèi)存;DeviceISR函數(shù)判斷中斷來源;DeviceIST函數(shù)處理中斷;RtAt?tachInterruptVectorEx將中斷向量與中斷服務線程IST、中斷服務例程ISR相關聯(lián)[18],針對中斷是否共享、中斷電平觸發(fā)方式、傳遞上下文等進行對應設置。

        3.2 RTX驅(qū)動程序功能函數(shù)

        3.2.1 主函數(shù)

        進入主函數(shù)main()中,首選創(chuàng)建互斥體對象,防止其他線程對某一數(shù)據(jù)進行同時訪問。隨后,為設備創(chuàng)建控制資源,這些控制資源主要包括以下:Windows指向RTX的事件對象hW2REvent,RTX指向Windows的事件對象hR2WEvent,Windows和RTX之間的共享內(nèi)存對象hDevCtrlShare,RTX命令接收線程對象hCmdThread。其中每塊板卡都將會創(chuàng)建一個命令接收線程,而且接收線程的入口地址相同。如果在創(chuàng)建這些控制資源的過程中,任何一個資源創(chuàng)建失敗,則退出主函數(shù);反之,所有控制資源都創(chuàng)建成功,則掛起當前線程,等待用戶發(fā)出相應的Windows指令,就進入RTX命令接收線程進行相應處理。

        3.2.2 初始化

        板卡初始化函數(shù)的聲明為int InitializeO?neDevRtss(ULONG DevNum);,首先判斷板卡是否打開,如果已經(jīng)打開,則返回-1,表示初始化失敗。如果板卡尚未打開,則利用DeviceSearch函數(shù),根據(jù)vendorID和deviceID查詢PXI總線上所有設備[19],LVDS遙測采集卡vendorID、deviceID依次為0x10b5、0x0104,查詢到LVDS遙測卡后,返回設備的bus、slot和ConfigData信息,并進行一系列的板卡硬件資源的初始化任務[20],主要包括對9054寄存器、Local寄存器基地址獲取、內(nèi)存映射。之后,禁止中斷,通過PciGetIrq獲取中斷請求Irq,并通過RtAttachInterrup?tVectorEx函數(shù)進行中斷連接[21]。連接中斷成功后,清除中斷。隨后,利用RtCreateLock函數(shù)創(chuàng)建發(fā)送時鐘、接收時鐘,并用RtCreateEvent函數(shù)創(chuàng)建接收完成事件通知。如果所有操作都未返回FALSE,則板卡打開狀態(tài)變量bOpened置為TRUE,板卡初始化成功。否則,初始化失敗,并利用CleanUpOneDevRtss(ULONG DevNum)釋放已經(jīng)獲得的板卡資源。

        3.2.3 清除設備

        清除設備的函數(shù)聲明為void CleanU?pOneDevRtss(ULONG DevNum);,當初始化失敗時或關閉板卡時,需調(diào)用該清除設備函數(shù)。首先,禁止中斷,取消9054和本地地址空間的內(nèi)存映射,之后,取消中斷連接,關閉已經(jīng)創(chuàng)建的發(fā)送Lock、接收Lock句柄以及接收完成事件,最后將板卡打開狀態(tài)變量RtssDevCtrl[DevNum].bOpened置為FALSE,即可完成板卡資源釋放清除功能。

        3.2.4 中斷處理

        中斷處理函數(shù)的聲明形式為BOOLEAN RTAPI IST(PVOID pContext);,中斷處理流程見圖2。

        圖2 中斷處理流程

        當有中斷產(chǎn)生時,進入DeviceISR判斷中斷來源和類型,讀取中斷狀態(tài)寄存器的值。如果不是本設備中斷,就將中斷傳遞到下一個共享該中斷號的設備;如果是本設備中斷,先禁止中斷,再清除中斷,并加鎖以同步,判斷設備是否開始接收數(shù)據(jù)。當設備沒有開始接收時,就設置接收數(shù)目,并將數(shù)據(jù)從硬件底層讀取放入驅(qū)動緩沖區(qū)中,數(shù)據(jù)接收完成時,就設置接收完成事件,并解鎖,允許中斷,繼續(xù)等待下一個中斷到來,完成數(shù)據(jù)接收。其中,將數(shù)據(jù)從硬件板卡上讀到驅(qū)動FIFO中的代碼實現(xiàn)如下:

        3.2.5 命令接收線程

        該函數(shù)的聲明形式為DWORD WINAPI RtxCmdThread(PVOID param);,用戶通過 Windows友好的交互界面下發(fā)不同的操作命令,主函數(shù)接收命令,并傳入RTX命令接收線程。RTX根據(jù)接收到Windows發(fā)出的不同命令進行相應的處理,這些命令主要包括打開板卡、關閉關閉、開始接收、停止接收操作。具體代碼實現(xiàn)如下:

        3.3 應用程序接口函數(shù)

        為了更好實現(xiàn)LVDS遙測卡的各項功能,還需要封裝一些用戶接口函數(shù),主要包括板卡的打開、關閉、發(fā)送數(shù)據(jù)、停止發(fā)送、接收數(shù)據(jù)、停止接收等。函數(shù)封裝的具體形式如下:

        3.4 RTSS進程與Win32進程通信

        通過共享內(nèi)存(ShareMemory)和信號量(Sema?phore),實時進程RTSS與上層應用程序Win32進程實現(xiàn)數(shù)據(jù)共享,通信過程如圖3所示。

        圖3 RTSS與Win32通信簡圖

        當RTSS訪問共享內(nèi)存中數(shù)據(jù)時,向共享內(nèi)存發(fā)送請求訪問信號量;共享內(nèi)存接到請求信號量,向上層Win32發(fā)送詢問信號量。如果上層應用已經(jīng)準備好并將數(shù)據(jù)寫入共享內(nèi)存,在收到詢問信號量后,則下發(fā)準備好信號量。此時,共享內(nèi)存再返回可以訪問信號量給RTSS,RTSS就可以從共享內(nèi)存中讀取數(shù)據(jù)。反之,當上層Win32進程需要訪問共享內(nèi)存數(shù)據(jù)時,過程同理。

        4 RTX驅(qū)動程序測試

        對Windows下開發(fā)的LVDS遙測采集卡WDM驅(qū)動程序進行多次測試,板卡自檢結(jié)果如圖4所示,出現(xiàn)了丟幀、誤碼的情況。這是因為飛控組件綜合測試系統(tǒng)對實時性要求較高,要求每6 ms來一次中斷,完成一幀數(shù)據(jù)256字節(jié)的上傳,而Windows系統(tǒng)的最小時間粒度僅為10 ms,無法滿足實時性要求[22]。相應的利用Windows7+RTX2012開發(fā)的RTX驅(qū)動程序進行多次重復測試,結(jié)果如圖5所示,接收到的數(shù)據(jù)與發(fā)送的數(shù)據(jù)完全吻合,表明設計開發(fā)的LVDS遙測采集卡的RTX驅(qū)動程序?qū)崟r、準確、可靠的完成了板卡的數(shù)據(jù)接收任務,很好地滿足了系統(tǒng)對數(shù)據(jù)接收實時性的要求。

        5 結(jié)束語

        鑒于飛控組件綜合測試系統(tǒng)對接收LVDS遙測信息的實時性要求,開發(fā)了Win7+RTX2012下的LVDS遙測采集卡的RTX驅(qū)動程序。本文詳細介紹RTX2012的驅(qū)動程序開發(fā)要點,并給出了詳實的開發(fā)過程和方法。經(jīng)反復測試,該RTX驅(qū)動程序運行穩(wěn)定。目前,所開發(fā)的RTX驅(qū)動程序已應用于測試設備,能準確、實時地完成LVDS遙測信號接收任務。

        圖4 Windows驅(qū)動程序測試結(jié)果

        圖5 RTX驅(qū)動程序測試結(jié)果

        參考文獻:

        [1]姜日東,徐志躍.基于PCI總線無時鐘LVDS數(shù)據(jù)采集卡的研究[J].電子設計工程,2013(17):100-102.

        [2]楊維,石德乾.基于Windows XP+RTX的火控調(diào)試平臺軟件設計[J].火炮發(fā)射與控制學報,2013(4):30-34.

        [3]劉婷,蔡鵬飛.Windows7的推廣與用戶實際應用習慣的磨合[J].電腦編程技巧與維護,2013(2):113-114.

        [4]胡建,張紅波.某型導彈飛控系統(tǒng)遙測信息接收裝置設計[J].電子設計工,2012(13):69-70,75.

        [5]邵華,劉亞斌,徐志躍.實時高速LVDS串行數(shù)據(jù)采集系統(tǒng)的設計[J].計算機測量與控制,2008(3):424-426.

        [6]Ardence公司.RTX技術白皮書[S].北京航天捷越(美斯比)科技有限公司,2004.

        [7]韓玉芹.基于RTX子系統(tǒng)的導彈試驗實時測控系統(tǒng)研發(fā)[D].西安:西安電子科技大,2013.

        [8]王立紅,方華.基于WINDOWS+RTX的艦炮火控測試評估系統(tǒng)開發(fā)[J].火力與指揮控制,2012,(11):199-201,205.

        [9]董曉明.搶占式動態(tài)優(yōu)先級實時調(diào)度算法[J].職業(yè),2012(29):91.

        [10]金相男.基于Ardence RTX的1553B驅(qū)動程序開發(fā)[J].電子設計工程,2014(2):149-151,155.

        [11]王偉志,襲著有,王贄.基于RTX實時仿真系統(tǒng)的設計與實現(xiàn)[J].電子設計工程,2013(12):24-27.

        [12]張前福,王華闖,許俊平,等.基于RTX的實時處理系統(tǒng)設計[J].微電子學與計算機,2012(8):58-61,65.

        [13]張蓓蕾,夏偉杰,周建江.基于RTX的舵機控制系統(tǒng)研制[J].電子科,2011(11):77-79.

        [14]黃鍵,龐亞華,薛順虎.RTX環(huán)境下PCI設備實時驅(qū)動的開發(fā)[J].計算機工程,2010(20):211-213.

        [15]吳佳楠,王偉,周軍濤,等.基于RTX實時模塊的飛控系統(tǒng)綜合測試系統(tǒng)實現(xiàn)[J].測控技術,2010(9):72-76,84.

        [16]王道彬,陳懷民,別洪武,等.基于RTX的實時測控系統(tǒng)軟件設計[J].火力與指揮控制,2009(8):125-127.

        [17]詹金勇.PXI/PCI總線設備驅(qū)動程序設計及應用[D].武漢:華中科技大學,2011.

        [18]武文峰,張泓.基于RTX的PXI板卡驅(qū)動程序開發(fā)[J].航空兵器,2012(3):51-54.

        [19]付文芳,張萍.RTX下PCI9052驅(qū)動程的開發(fā)[J].科技廣場,2006(8):97-100.

        [20]李宏科.一種基于RTX的實時系統(tǒng)的實現(xiàn)[J].裝備制造技術,2006(3):55-56,65.

        [21]張帆,史彩成.Windows驅(qū)動開發(fā)技術詳解[M].北京:電子工業(yè)出版社,2008.

        [22]胡浩.基于RTX實時系統(tǒng)ARINC429總線通信驅(qū)動開發(fā)[J].計算機測量與控制,2015(1):310-312.

        猜你喜歡
        信號量共享內(nèi)存采集卡
        基于STM32的mbedOS信號量調(diào)度機制剖析
        高精度AD采集卡性能測試及評價方法研究
        中國測試(2022年2期)2022-03-19 09:57:30
        通過QT實現(xiàn)進程間的通信
        Nucleus PLUS操作系統(tǒng)信號量機制的研究與測試
        測控技術(2018年8期)2018-11-25 07:42:12
        面向數(shù)控機床的多通道傳感數(shù)據(jù)采集卡設計
        基于PCI總線的多處理器協(xié)同機制研究
        科技風(2017年20期)2017-07-10 18:56:06
        并行高速采樣在地震物理模擬采集中的應用
        PCI-e高速數(shù)據(jù)采集卡的驅(qū)動與上位機軟件設計
        電子器件(2015年5期)2015-12-29 08:43:12
        QNX下PEX8311多路實時數(shù)據(jù)采集的驅(qū)動設計
        電子世界(2014年21期)2014-04-29 06:41:36
        一種高效RTAI 共享內(nèi)存管理層的研究與實現(xiàn)*
        自拍av免费在线观看| 毛茸茸性xxxx毛茸茸毛茸茸| 99精品成人片免费毛片无码| 玩弄极品少妇被弄到高潮| 亚洲av成人av三上悠亚| 亚洲精品久久久av无码专区| 亚洲黄色电影| 中日无码精品一区二区三区| 久久久精品国产亚洲av网麻豆 | 车上震动a级作爱视频| 亚洲人成无码网站十八禁| 美女与黑人巨大进入免费观看| 国产成人精品999视频| 国产美女遭强高潮网站| 国产精品亚洲专区无码不卡| 国产精品国产三级国产专区不| 亚洲乱亚洲乱妇| 成人在线激情网| 一区二区三区四区日韩亚洲| 日韩中文字幕有码午夜美女| 亚洲国产精品久久久久婷婷老年 | 亚洲图片自拍偷图区| 俺来也俺去啦最新在线| 无码国产精品一区二区AV| 经典黄色一区二区三区| 久久久久成人精品无码中文字幕| 亚洲精品久久久久高潮| 日本一区二区在线播放观看| 国产不卡在线视频观看| 亚洲色欲色欲www| 国产午夜无码精品免费看动漫| 久久国产精品亚洲我射av大全| 国产卡一卡二卡3卡4乱码 | 亚洲精品aⅴ无码精品丝袜足 | sm免费人成虐漫画网站| 国产一区二区三区精品成人爱| 亚洲av无码乱码国产麻豆| 日韩成人极品在线内射3p蜜臀| 91网红福利精品区一区二| 青青草视频在线观看入口| 国产色在线 | 亚洲|