首頁>技術中心>技術資訊>生物機能分析儀USB接口驅動程序的設計
生物機能分析儀USB接口驅動程序的設計
發布時間:2017-11-22
引言
USB(Universal Serial Bus)總線是INTEL、NEC、MICROSOFT、IBM等公司聯合提出的一種新的串行總線接口規范。USB總線使用簡單,支持即插即用,傳輸速度高,USB1.1協議支持12Mbps的傳輸速率,USB2.0傳輸協議支持480Mbps的傳輸速率。USB接口已經成為標準的PC接口。
生物機能實驗分析儀分析功能復雜,必須借助于計算機來實現,采用USB接口與計算機連接的生物機能實驗分析儀具有更高的性價比,而USB驅動程序的設計是USB接口設計中的一個難點,文中主要討論在Windows操作系統下基于WDM模式的USB設備驅動程序的設計方法。
2USB驅動程序的架構
USB設備的驅動程序是WDM(Windwos DriverMode)驅動程序。WDM是微軟最新推出的一種驅動程序模型,旨在降低驅動程序的復雜性,簡化驅動程序的開發。WDM驅動程序采用分層驅動的方法,在用戶應用程序和物理設備之間存在著幾個不同的驅動程序層次。在WDM模型驅動程序中每個設備至少有兩個驅動程序,其中一個稱為功能驅動程序,也就是我們常說的設備驅動程序。它了解硬件工作的所有細節,負責初始化I/O操作,為用戶提供一種設備適合的控制方式。
另一個驅動程序稱為總線驅動程序(USBD.SYS)。它負責管理硬件與計算機的連接,USB總線驅動程序由Windows操作系統提供。與傳統的PC總線(如PCI總線)設備的驅動程序相比,USB設備驅動從不直接與硬件對話,它僅靠創建URB(USB請求塊),并把URB提交到總線驅動程序就可完成硬件操作。圖1描述了USB驅動程序和USB總線驅動程序的層次關系。
和其他WDM驅動程序一樣,USB驅動程序主要包含5個例程:驅動程序入口例程、即插即用例程、分發例程、電源管理例程和卸載例程。驅動程序就是這些例程的集合。
3使用總線驅動程序
前提提到,USB驅動程序不直接和USB設備通信,而是通過總線驅動程序來和硬件對話??梢园裊SB總線驅動程序看作是接受URB的實體,向USBD的調用被轉化為帶有主功能代碼為IRP MJ INTERNALDEVICE CONTROL的IRP。然后USBD再調度總線時間,發出URB中指定的操作。
3.1URB的結構
URB是一種聯合類型的數據結構,其包含了18種不同類型的結構。URB HEADER是每個URB結構的的開始,包含最基本的信息,如URB的長度、URB的功能等。在使用URB前,USB設備驅動程序必須設置好該結構的Length字段和Function字段。URBHEADER結構的Function字段指明URB的功能代碼,其定義了請求的具體操作。
設備驅動程序根據不同的USB事務(transaction)使用不同的子結構,并把合適的值填入URB的各個域中。創建完URB后,需要創建并發送一個內部I/O控制(IOCTL)請求到USBD驅動程序,然后等待設備回應。
3.2USB設備的配置
USB設備在能夠使用之前必須被正確配置,USB總線驅動程序自動檢測新插入的USB設備。然后它讀取設備內的設備描述符以查明插入的是何種設備,具體安裝哪一個驅動程序。操作系統的配置管理器向驅動程序發送IRP MN START DEVICE請求。設備驅動程序在處理這個請求時,首先為設備選擇一個配置,接著應該選擇配置中的一個或多個接口。選定了一個配置和一組接口后,驅動程序應該向總線驅動程序發送配置選擇URB。最后,總線驅動程序向設備發出命令使能選定的配置和接口。
總線驅動程序負責創建管道和用于訪問管道的句柄,管道提供功能驅動程序與選定接口端點之間的通信,它同時還創建配置句柄和接口句柄。
3.3USB設備的數據傳輸
USB定義了四種傳輸方式:控制傳輸、塊傳輸、中斷傳輸、同步傳輸。不同類型的傳輸使用不同種類的URB,每個URB都包含以下幾個字段:Transfer-Flags、TransferBuffer、TransferBufferLength和TransferBufferMDL,這幾個字段指明了數據的傳輸方向和數據的存儲方式以及傳輸的長度。本儀器主要采用了控制傳輸與塊傳輸方式。
客戶程序通過USB管道發送或接收數據時,它首先調用Win32 API,向設備驅動程序發出一個IRP。設備驅動程序把客戶的請求引導到有正確端點的管道上,它把請求提交到總線驅動程序,總線驅動程序再把請求分解成多個事務,然后這些事務被送往總線,總線驅動程序必須安排好多個事務以使它們能被裝入同一幀中。
一般USB設備的設計需要兼容USB2.0和USB1.1協議。兩種速率下數據傳輸的區別主要是每個事務中數據包的大小,對于Bulk傳輸,USB1.1下每個包最多64字節,USB2.0下每個包可以有512字,該方案在設備驅動程序的設備擴展中定義了一個字段來保存主機支持的速率,然后針對不同的數字進行不同數據包的處理。
4結論
這里討論了USB驅動程序的結構,給出了對總線驅動程序調用的實現方法,按照方案設計的驅動程序能夠滿足快速傳輸的目的,設計已經成功地應用于生物機能分析儀。
摘自:中國計量測控網