东方亚洲欧a∨人在线观看|欧美亚洲日韩在线播放|日韩欧美精品一区|久久97AV综合

        基于Windows系統(tǒng)的數(shù)據(jù)接收卡的驅(qū)動程序開發(fā)

        發(fā)布時間:2018-07-02 來源: 歷史回眸 點擊:


          [摘 要]介紹了在Windows系統(tǒng)環(huán)境下利用WDF開發(fā)CPCI接收設備的驅(qū)動程序的步驟。重點研究了板卡多突發(fā)中斷情況下,實現(xiàn)在系統(tǒng)內(nèi)核層穩(wěn)定采集板卡數(shù)據(jù)的方法。
          [關(guān)鍵詞]CPCI,驅(qū)動程序,WDF
          [Abstract]the paper introduces the process of empolderring CPCI receiving device driver using WDF depending Windows operation system. Particularly shows the device causing burst interruptions receives data stably.
          [Key words]CPCI, driver,WDF
          中圖分類號:S343 文獻標識碼:A 文章編號:1009-914X(2018)24-0274-02
          1.引言
          數(shù)據(jù)接收卡是一種廣泛應用的測試設備。為了便于板卡利用Windows系統(tǒng)的可視化界面,實時數(shù)據(jù)存儲、分析與顯示,需要開發(fā)基于Windwos系統(tǒng)的驅(qū)動,完成數(shù)據(jù)接收卡與用戶應用程序間的橋接。由于cpci總線具有更好的機械特性和更多的擴展IO,自主研發(fā)數(shù)據(jù)接收卡采用cpci總線接口設計。驅(qū)動程序設計選用微軟新推出的WDF(Windows Driver Foundation,Windows驅(qū)動基礎)框架驅(qū)動模型,相比較早的WDM(Windows Driver Model),更提高了驅(qū)動程序的穩(wěn)定性。
          2.Windows環(huán)境下基于cpci總線的采集卡驅(qū)動框架設計
          設備的驅(qū)動程序至少包含兩個驅(qū)動程序,總線驅(qū)動程序和功能驅(qū)動程序?偩驅(qū)動程序由操作系統(tǒng)提供, 基于CPCI總線的驅(qū)動程序是指功能驅(qū)動程序,只要完成設備功能。采集卡主要實現(xiàn)數(shù)據(jù)的采集和指令的發(fā)送,因此采集卡的驅(qū)動主要實現(xiàn)中斷操作及控制指令的讀寫操作。針對多中斷接收卡設計的基于Windows系統(tǒng)的驅(qū)動設計,該驅(qū)動包括板卡識別模塊,地址轉(zhuǎn)換模塊,多中斷數(shù)據(jù)處理模塊。具體驅(qū)動處理流程如下圖所示。CPCI驅(qū)動程序設計步驟如圖1所示。
          1)初始化設備,創(chuàng)建設備對象、設備接口和IO隊列,主要在DriverEntry例程實現(xiàn)。調(diào)用WdfDriverCreate()函數(shù)創(chuàng)建WDFDRIVER對象;
          2)完成地址映射,將板卡硬件地址轉(zhuǎn)換成Windows系統(tǒng)可以識別與操作的地址,初始化中斷與DMA通道,主要在即插即用例程EvtDriverDeviceAdd()中實現(xiàn);
          3)上層應用程序發(fā)送控制指令,開中斷,啟動中斷處理過程,主要在分發(fā)例程EvtIoDeviceControl()中實現(xiàn);
          4)中斷操作,主要在中斷例程中實現(xiàn);
          3.遇到問題及解決措施
          數(shù)據(jù)接收卡產(chǎn)生突發(fā)多中斷脈沖,且不同類型中斷脈沖間隔可能會很短,一般的驅(qū)動程序設計會出現(xiàn)丟數(shù)情況,該驅(qū)動采用與硬件設備建立握手機制,動態(tài)存儲中斷類型信息,延遲數(shù)據(jù)搬移釋放中斷處理函數(shù)的方式,實現(xiàn)了接收卡實時穩(wěn)定的接收數(shù)據(jù)。建立握手與中斷類型緩存表,延遲數(shù)據(jù)處理的方法步驟如下所示。
          1)建立中斷類型緩存表,初始化讀計數(shù)write_count_n =0與寫計數(shù)read_ count_n =0;
          2)在中斷處理函數(shù)中接收中斷,根據(jù)寄存器存儲的中斷類型將不同的標志位寫入中斷類型緩存表,相應中斷類型的write_count_n加1,并根據(jù)中斷類型標志位預判是否有其他中斷到達;
          3)中斷類型判讀完成后,向固定IO寄存器寫入1,后寫入0,輸出脈沖,與硬件設備完成握手,通知硬件將高電平的中斷信號拉低,有效防止驅(qū)動程序由于中斷處理函數(shù)的處理時間較長而未能響應其他中斷脈沖信號的情況的發(fā)生;
          4)啟動延遲過程調(diào)用,釋放中斷處理函數(shù),繼續(xù)接收其他類型中斷,提高中斷處理效率;
          5)根據(jù)中斷類型緩存表類型在延遲過程調(diào)用函數(shù)中進行不同數(shù)據(jù)的搬移,并將相應中斷類型的read_count_n加1。根據(jù)數(shù)據(jù)類型置不同類型事件,通知上層應用程序從數(shù)據(jù)緩存中搬移數(shù)據(jù)(圖2)。
          4.結(jié)束語
          自主研發(fā)板卡需要采集多路數(shù)據(jù),輸出多中斷,采用普通驅(qū)動設計已經(jīng)無法滿足設計需求,在驅(qū)動設計中采用建立握手和中斷類型緩存表的方法,實現(xiàn)了在驅(qū)動內(nèi)核層實時穩(wěn)定的進行數(shù)據(jù)采集。
          參考文獻
          [1] 尹勇.PCI總線設備開發(fā)寶典[M].北京:航空航天大學出版社,2005.
          [2] 賈濤,王鐵嶺.PCI數(shù)據(jù)采集卡的WDM驅(qū)動開發(fā)[J].國外電子測量技術(shù),2006(8).
          [3] 張帆,史彩成.Windows驅(qū)動開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.
          [4] 鄭秀玉,李曉明,李暢,等.基于PCI總線的數(shù)據(jù)采集卡驅(qū)動程序設計與實現(xiàn)[J].電器應用,2007,26(1).
          [5] 王磊,魯新平,李吉成.WinDriver在開發(fā)基于PLX9056芯片的PCI設備驅(qū)動程序中的應用[J].現(xiàn)代電子技術(shù),2006,29(18).

        相關(guān)熱詞搜索:程序開發(fā) 接收 驅(qū)動 數(shù)據(jù) 系統(tǒng)

        版權(quán)所有 蒲公英文摘 smilezhuce.com