全国服务热线:400-6226-992
全部分类
耗材

分离/过滤/萃取 加热/降温 检测耗材 清洁/消毒/回收 取样/加样 容器/收纳 塞子/密封 蒸发/干燥 生物通用耗材 身体防护 手部防护 头部/面部防护 足部防护

>
生物机能分析仪USB接口驱动程序的设计

云试剂-科学材料城 / 2018-07-03

引言

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设备通信,而是通过总线驱动程序来和硬件对话。可以把USB总线驱动程序看作是接受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驱动程序的结构,给出了对总线驱动程序调用的实现方法,按照方案设计的驱动程序能够满足快速传输的目的,设计已经成功地应用于生物机能分析仪。

摘自:中国计量测控网


本文由乔科化学&云试剂商城整理编辑,如有侵权请联系删除