新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于USB總線和Aduc831單片機的數據采集系統(tǒng)的設計

基于USB總線和Aduc831單片機的數據采集系統(tǒng)的設計

作者: 時間:2012-03-27 來源:網絡 收藏

3.2 設備驅動程序

設備驅動程序WDM。WDM型驅動程序是內核程序,與標準的Win32用戶態(tài)程序不同。采用了分層處理的方法, 較高級的設備驅動程序和較低級的USB函數層。其中USB函數層由兩部分組成:較高級的通用串行模塊(USBD)和較低級的主控制器驅動程序模塊(HCD)。USB設備驅動程序不必具體對硬件編程,所有的USB命令、讀寫操作通過驅動程序轉給USB設備。但是,USB設備驅動程序必須定義與外部設備的通訊接口和通訊的數據格式,也必須定義與應用程序的接口。Windows 98/2000提供了一系列的驅動程序,他們具有為許多標準類型設備服務所需的所有基本功能,用戶按照提示可以定義設備的配置和功能,然后做功能的修改即可??梢园裊SB設備驅動程序的功能劃分成4個不同的模塊來實現:初始化模塊、即插即用管理模塊、電源管理模塊以及I/O功能實現模塊。初始化模塊提供1個入口函數DriverEntry(),在DriverEntry中,需要提供一個AddDevice例程,把驅動程序添加到驅動程序堆棧中去。另外,所有對各種IRP(I/O請求包)的處理例程都在此入口函數中作為定義。
DriverEntry(IN PDRIVER_OBJECT DriverObject,…) //驅動程序入口
{
DriverObject->DriverExtension->AddDevice=USBAddDevice;
DriverObject->DriverUnload=USBUnload;
DriverObject->MajorFunction[IRP_MJ_READ]=USBRead;
DriverObject->MajorFunction[IRP_MJ_WRITE]=USBWrite;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = USBDeviceControl;
RegisterForPnpNotification(DriverObject);
return status;
}

即插即用管理模塊用來實現USB設備的熱插拔及動態(tài)配置。當硬件檢測到有USB設備接入時,Windows98查找響應的驅動程序,并調用它的 DriverEntry例程。PnP(即插即用)管理器調用驅動程序的AddDevice例程,告訴它添加了一個設備。在此處理過程中,驅動程序收到一個設備啟動請求(IRP_MN_START_DEVICE)的IRP。同理,當要拔除時,PnP管理器會發(fā)出一個設備刪除請求(IRP_MN_REMOVE_DEVICE)的IRP,由驅動程序進行處理。通過對這些PnP請求的處理,可支持設備的熱插拔和即插即用功能。

電源管理模塊負責設備的掛起與喚醒。

I/O功能實現模塊完成I/O請求的大部分工作。若應用程序想對設備進行I/O操作,它便使用Windows API函數,對WIN32子進行WIN32調用。此調用由I/O服務接收并通知I/O管理器,I/O管理將此請求構造成一個合適的I/O請求包(IRP)并把它傳遞給USB設備驅動程序。USB設備驅動程序接收到這個IRP以后,根據IRP中包含的具體操作代碼,構造相應的USB請求塊并把此 URB(USB請求塊)放到一個新的IRP中。然后,把此IRP傳遞到USB驅動程序,USB總線驅動程序根據IRP中所含的URB執(zhí)行相應的操作(如從USB設備讀取數據等),并把操作結構通過IRP返還給USB設備驅動程序。USB設備驅動程序接收到此IRP后,將操作結果通過IRP返還給 I/O管理器。最后,I/O管理器將此IRP中操作結果返還給應用程序,至此應用程序對USB設備的一次I/O操作完成。

結束語:

USB為計算機外設輸入輸出提供了新的接口標準。它使設備具有熱插拔,即插即用,自動配置的能力,并標準化設備連接, 還可與MAX485結合起來實現數據的遠程采集。該系統(tǒng)具有可靠性高、性價比高和多點采集等優(yōu)點。而USB2.0標準具有更高的傳輸速率,更具有美好的應用前景。

參考文獻:
1. datasheet. Analog device.
2. USB1.1. Universal serial bus specification S.
3. 張念淮、江浩.《USB總線接口開發(fā)指南》 國防工業(yè)出版社.


上一頁 1 2 3 4 下一頁

評論


相關推薦

技術專區(qū)

關閉