0 引 言 Windows驅動程序模型(Windows driver model,WDM)是Microsoft公司力推的全新驅動程序模式,與以前的驅動程序模型比較,它支持即插即用(plug and play,PnP)、電源管理和Windows管理診斷WMI等技術。在Windows操作平臺上,WDM已成為主流的驅動模型,但這也給WDM驅動程序的開發人員提出了許多新的挑戰,即便是開發和測試最簡單的設備驅動程序也變得比以前任何時候都復雜。DriverWorks由NuMega公司開發,主要為開發Windows98、Windows 2000和Windows NT的WDM設備驅動程序提供了一個自動化的方法,使驅動程序的開發相對于使用Microsoft公司提供的設備驅動程序開發包(device driverskit,DDK)工具更加容易;并且它可以集成到VC++6.0開發環境中(后面要介紹的功能實現都是在用VC++6.0集成環境生成的驅動程序框架中編寫的),可以引導完成設備驅動程序開發的全過程,這樣就可以像生成其他工程一樣根據硬件種類自動生成設備驅動程序框架,省去了大量編寫代碼的時間。本文就是利用DriverWorks開發工具開發基于PXI總線的數據采集卡的WDM驅動程序。 1 PXI總線數據采集卡的硬件框圖 該數據采集系統的硬件結構框圖如圖1所示,該系統包括數據采集模塊、F先進先出數據緩存模塊、接口電路模塊和CPLD系統控制器模塊4個部分。待采樣的模擬信號經由數據采集模塊進行數據采集,采樣后經過轉換得到的數字信號先被送入先進先出存儲器進行緩存,當緩存器所存儲的數據達到半滿/全滿時,將發送一個半滿/全滿標志信號,觸發中斷,由系統控制器通過PXI總線讀取數據。整個系統的工作邏輯時序控制由1片CPLD控制芯片來編程實現,接口邏輯采用通用的PXI總線接口邏輯芯片PCI9030來實現。 2 驅動程序設計 2.1 中斷過程調用 當FIFO數據緩存器讀取的數據達到半滿/全滿時,其相應半滿/全滿信號線會走低,該信號線與PCI9030芯片的外部觸發中斷輸入管腳相連,從而觸發中斷,主模塊通過PXI總線接口芯片讀取FIFO中的數據,其中斷服務例程如下: 2.2 中斷延遲過程調用 中斷服務例程的處理時間應當盡可能短,并且由于中斷服務例程在DIRQL級別上運行,很多函數不能調用,所以通常是在延遲過程調用例程中做大部分的中斷處理工作。本系統延遲例程調用相關程序如下: 2.3 讀取數據 對于數據的讀取,主要是在SerialRead()例程中實現的,其主要程序語句如下: 2.4 SerialWrite()例程 數據采集卡硬件系統的初始化和肩動工作主要在Se-rialWrite例程中實現,其相關部分程序 如下: 3 應用程序設計 編寫驅動程序本身不是最終目的,最終目的是調用驅動程序管理資源,并為用戶應用程序使用。這里采用的是console控制臺應用程序,其基本框架也可以由Driverstuio自動生成,只需在現有的框架里面插入相應的代碼就可粵耍?渲骱?齧ain()的相應代碼如下: 4 結束語 DriverWorks是一款功能強大、使用方便的驅動程序開發工具,利用它可以方便快捷地構造PCI設備的驅動程序框架,大大加快了開發周期,提高了開發效率。控制臺應用程序的優點是開發起來方便、快捷,但在數據的圖形化顯示方面卻有所不足,如果將驅動程序與VC或者LabVIEW等圖形化應用程序編程環境相結合,就可以編制出界面更加友好、功能更為強大的數據采集系統軟件平臺。 |