信息包的其余部分都能被正确接收。按 PID 字段的功能可分为 4 类:令牌、数
据、握手和专用,并由字段的前 2 位指明。
主机和 USB 设备都要对接收到的 PID 字段进行正确的译码。当校验字段有
错误或者得到未定义的值,则认为该 PID 字段已被破坏,则忽略信息包的其余
部分。如果 USB 设备接收到一个其不支持的 PID 字段,则不予应答,例如 IN
端点会忽略所有的 OUT令牌。
2.3 地址字段
地址字段,也称地址域。地址字段用于指定 USB系统中的一个 USB 设备,
具有唯一性,由主机分配。其格式包含 8 个数据位,最多可指定 128个设备, 其
中地址 0只能用作缺省地址,不能分配给 USB设备。USB设备是数据的发送方
还是接受方则取决于 PID 字段的值。
IN、OUT、SETUP、SPLIT 和 PING 令牌包中都必须有地址字段,以指明与
其通信的 USB 设备。如果指定的设备不存在,则该令牌包将被忽略。在 USB设
备上电和复位时,其将使用缺省地址 0 来与主机通信。每个设备会由主机分配一
个唯一的设备地址[9]。
2.4 端点字符
端点字符,也称端点域。用于指定 USB 设备中的端点。高速、全速设备最
多可有 16个端点,低速设备最多只能有 3 个端点。所有 USB设备都必须含有一
个 0 号控制端点,以完成与主机间的通信配置,除 0 号端点外,其余端点都是具
体 USB设备所持有[6]IN、OUT、SETUP、SPLIT 和 PING 令牌包中都必须有端点字段,以指明与
其进行数据传输的 USB 设备端点。以下情况令牌包忽略:指定的端点不存在时,
端点初始化之前就访问的。
2.5 帧号字段
帧号字段,也称为帧号域。USB 协议中帧是时间概念,1 帧就是 1ms。而
USB 总线上 1 帧就是一个独立单元,包含一系列总线动作。帧字段用于指定当
前的帧号,每一个帧都有特定的帧号,仅在帧开始的SOF 令牌包中发送。长度
为 11位,每传1 帧,主机就将其内容加 1,当达到最大值 7FFH 时归零[9]。
2.6 数据字段
数据字段,也称数据域。数据字段包含主机和 USB设备间需要传输的数据,
以字节为单位,最大长度为 1024字节。不同的传输类型中,数据字段的长度各
不相同,必须为整数个字节,每个字节都是最低有效位(LSB)被传输。
2.7 循环冗余检验字段
循环冗余检验字段,也称循环冗余检验域。为保证数据传输可靠性,USB
在令牌包和数据包中都使用了循环冗余检验, 它能百分之百识别出信息包中的一
位或者两位错误。CRC检验失败标识在被保护的信息包中至少有一个字段出错,
这时接收方将忽略该字段,在大多数情况下忽略整个信息包。
CRC 在发送方进行填充位之前产生的,接收方必须去掉填充位之后,再对
CRC 字段进行译码。 信息包中的 PID本身含有检验字段, 所以不要对其进行 CRC
保护。循环冗余检验对于令牌包和数据包的校验不一样:对于令牌包USB 采用
5 位的 CRC校验法;而对于数据包,而采用 16 位的 CRC校验法[10]
。3. 系统设计
WDM是Microsoft公司于1996年推出的驱动程序模式, 应用平台是Windows
操作系统。当前乃至以后相当长一段时间内,在 Windows 平台上,WDM都属于
主流的驱动模式。WDM驱动模式能满足 Windows XP 对驱动程序的执行效率的
高要求,WDM 通过一个 128位的全局唯一标识或者符号链接名实现驱动程序的识别。
3.1 WDM驱动程序模型概述
WDM 属于操作系统的内核模式,其驱动程序由运行于内核模式的系统级代 Windows下USB驱动程序的设计(3):http://www.751com.cn/jisuanji/lunwen_8467.html