<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Windows 2000環(huán)境下測控系統的WDM設備

Windows 2000環(huán)境下測控系統的WDM設備

作者: 時(shí)間:2012-05-15 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:介紹了2000操作下的最新的驅動(dòng)程序模型()的基本原理,同時(shí)以CompuwareNumega公司的DriverWorks為開(kāi)發(fā)工具,開(kāi)發(fā)出了基于PCI局部總線(xiàn)的測控某專(zhuān)用接口卡的驅動(dòng)程序。

本文引用地址:http://dyxdggzs.com/article/149058.htm

關(guān)鍵詞:驅動(dòng)程序模型;;DriverWorks;PCI局部總線(xiàn)

1WDM驅動(dòng)程序的基本原理

WDM驅動(dòng)模型是Microsoft公司推出的最新的驅動(dòng)程序模型,他有許多新的特性,如分層結構、即插即用、電源管理、WMI等,是未來(lái)驅動(dòng)程序發(fā)展的方向。如圖1所示,2000中應用程序不能直接訪(fǎng)問(wèn)底層硬件,而必須通過(guò)設備驅動(dòng)程序進(jìn)行操作(讀、寫(xiě)、中斷等)。應用程序對設備I/O進(jìn)行Win32API函數調用,這個(gè)調用由I/O服務(wù)接收,I/O管理器從這個(gè)請求構造一個(gè)合適的I/O請求包(IRP),然后傳遞給設備驅動(dòng)程序,設備驅動(dòng)程序與硬件打交道,并完成IRP的處理,最后I/O管理器把數據和結果返回給Win32和用戶(hù)應用程序。

2PCI9052計數卡驅動(dòng)程序的開(kāi)發(fā)

(1)計數卡用途及硬件電路設計

在測控系統領(lǐng)域,經(jīng)常需要對光柵、電機編碼器等傳感器傳輸過(guò)來(lái)的脈沖進(jìn)行計數,這樣才可以得到控制對象的準確位置等數據,對脈沖計數的接口卡硬件電路原理圖如圖2所示。PCI總線(xiàn)經(jīng)過(guò)PCI9052(PCIBUSLOCALBUS轉換芯片)連接到局部總線(xiàn),然后經(jīng)過(guò)譯碼將I/O端口地址分配給計數專(zhuān)用芯片,PCI9052的LOCALBUS一側的中斷線(xiàn)連接至硬件中斷觸發(fā)端。這樣,當中斷觸發(fā)時(shí),計數專(zhuān)用芯片鎖存外部傳感器的計數脈沖的當前值,進(jìn)行實(shí)時(shí)采樣。

(2)設備驅動(dòng)程序的設計

①DriverWorks簡(jiǎn)介

開(kāi)發(fā)驅動(dòng)程序一般都使用DDK(微軟提供的驅動(dòng)程序開(kāi)發(fā)軟件包),但是這種方法開(kāi)發(fā)周期長(cháng),難度大。DriverWorks是開(kāi)發(fā)驅動(dòng)程序的非常好的工具,他定義了許多類(lèi),這些類(lèi)封裝了DDK提供的函數,完全兼容DDK的全部函數。他自動(dòng)生成一個(gè)驅動(dòng)程序框架,驅動(dòng)程序開(kāi)發(fā)者只是在需要的地方添加一些代碼,這樣能很快地開(kāi)發(fā)出NT或WDM設備驅動(dòng)程序,而且DriverWorks函數庫的使用,可以大大減少驅動(dòng)程序的代碼長(cháng)度。因此,實(shí)驗中采用了DriverWorks來(lái)開(kāi)發(fā)驅動(dòng)程序。

②PCI計數卡驅動(dòng)程序的組成

驅動(dòng)程序組成模塊如圖3所示。

③用戶(hù)應用程序和驅動(dòng)程序的通訊

較為通用的方法是應用程序使用Win32API函數DeviceIoControl,ReadFile或者WriteFile與驅動(dòng)程序進(jìn)行通訊。

例如用戶(hù)應用程序使用標準Win32API函數DeviceIoControl來(lái)執行某項操作,在驅動(dòng)程序一方,這個(gè)DeviceIoControl調用被轉化成一個(gè)帶有特殊的IRP-MJ-DEVICE-CONTROL功能碼的IRP。通常,此IRP處理有如下的模型如圖4所示。

④PCI計數卡設備驅動(dòng)程序中的主要代碼

在驅動(dòng)程序中,首先要定義Pciwdmdevice類(lèi),他是KPnpDevice的公有派生類(lèi),代表PCI計數卡的設備對象,然后才可以調用相應的函數訪(fǎng)問(wèn)硬件。在PciwdmDeviceh頭文件中定義如下:

驅動(dòng)程序要想訪(fǎng)問(wèn)硬件,就必須獲取相關(guān)的硬件資源。WDM驅動(dòng)程序通過(guò)資源描述符列表獲取硬件資源,在用DriverWorks開(kāi)發(fā)時(shí),這一步變得非常簡(jiǎn)單,他自動(dòng)地在源文件PciwdmDevicecpp的即插即用的啟動(dòng)例程中添加如下的代碼:

測控系統經(jīng)常要求實(shí)時(shí)性,如實(shí)時(shí)性數據采集。用DriverWorks開(kāi)發(fā)驅動(dòng)程序可以通過(guò)硬件中斷來(lái)處理,中斷服務(wù)例程(ISR)運行在DIRQL中斷優(yōu)先級,比一般的服務(wù)例程的優(yōu)先級高很多,在此級別上不能進(jìn)行大多數的內核調用,因此ISR僅執行一些緊急的任務(wù),然后調用一個(gè)在DISPATCH-LEVEL(比DIRQL優(yōu)先級低)級別上運行的延遲過(guò)程調用例程(DPC),最后完成IRP,也就完成了實(shí)時(shí)性數據采集的要求。

應用程序用CreatFile()函數打開(kāi)到WDM設備句柄,在使用緩沖I/O方式時(shí),操作系統自動(dòng)地將用戶(hù)緩沖區復制到非分頁(yè)內存或者從非分頁(yè)內存復制出來(lái),在IRP首部存儲合適的指針,在驅動(dòng)程序中只需簡(jiǎn)單地讀或者寫(xiě)這個(gè)內存就可以了。在應用程序的最后調用CloseHandle()函數關(guān)閉WDM設備。

至此,對硬件的讀、寫(xiě)和中斷的工作都已經(jīng)完成,實(shí)現了預期的目標。如果是開(kāi)發(fā)ISA總線(xiàn)的接口卡,則還需要修改INF安裝文件,指定硬件資源,如I/O端口地址和中斷號。而開(kāi)發(fā)PCI總線(xiàn)的接口卡時(shí),系統讀取PCI的配置空間的信息,自動(dòng)分配硬件資源,不需要進(jìn)行手工設置。

3結語(yǔ)

上述實(shí)例在實(shí)驗中得到了成功運用,實(shí)踐證明是可行的。WDM模式的驅動(dòng)程序雖然目前應用得還不是很多,但是相信在幾年之后必將成為驅動(dòng)程序的主流模式。WDM驅動(dòng)程序模型是非常復雜的,在此只是起到拋磚引玉的作用,對這一模型進(jìn)行了簡(jiǎn)單的概括性的描述,在應用上還有很多需要深入和擴展的地方。



關(guān)鍵詞: 設備 WDM 系統 環(huán)境 Windows

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>