努力成为linux kernel hacker的人李万鹏原创作品,转载请标明出处
http://blog.csdn.net/woshixingaaa/archive/2011/05/03/6387488.aspx
Transfer3:
Transfer3是获得配置描述符。Transaction12是SETUP Transaction,要记住令牌包指明当前Transaction的类型,所以第一个Packet328包指明当前Transaction为SETUP事务。Packet329的数据域80表示数据是需要从device发向host的,06指明bRequest为GET_DESCRIPTOR,02表示的是CONFIGURATION,然后device回复了一个ACK握手包。Transaction13是一个IN型Transaction,令牌包Packet331指明该Transaction为IN类。下面分析一下Packet332的Data域,参照下图:
0x09表示配置描述符的长度为9个字节,0x02是描述符的类型,0x22是使用GET_DESCRIPTION请求时,返回的数据长度。也就是说对包括配置描述符,接口描述符,端点描述符,class-或vendor-specific描述符在内的所有描述符进行统计。0x01为bNumInterfaces表示接口的数目,0x01为bConfigurationValue,对拥有多个配置的USB设备来说,可以用SET_CONFIGURATION改变正在被使用的USB配置,bConfigurationValue指明了将要激活那个配置。iConfiguration为描述配置信息的字符串描述符的索引值,bmAttributes这个字段表示了配置的一些特点。Transaction14的DATA包的数据域就一个字节为0x32,MaxPower,表示设备正常运转时,从总线那里分得的最大电流值。Transaction15首先host向device发送了一个OUT包,表示这个Transaction是一个OUT类型,然后host向device发送了一个为0字节的包,device返回了一个ACK握手包。
Transfer4:
Transfer4获得了4个描述符。Transaction16是一个SETUP Transaction。Packet342的数据域80表示数据是需要从device发向host的,06指明bRequest为GET_DESCRIPTOR,02表示的是CONFIGURATION,然后device回复了一个ACK握手包。Transaction17获得的是配置描述符,最后一个MaxPower在Transaction18的Packet349的Data域中的第一个字节,注意这些数据是小端存放的。现在分析剩下的7个字节,0x09为bLength,是指描述符的长度;0x04为bDescriptorType,是指描述符的类型;0x00为bInterfaceNumber,是指接口号。0x00为bAlternateSetting,是指接口使用的是哪个可选设置;0x01为bNumEndpoints,接口拥有的端点数量;0x03为bInterfaceClass,0x01为bInterfaceSubClass,0x02为bInterfaceProtocol,0x00为iInterface,是接口描述符对应的字符串描述符的索引值。
HID(Human interface device)是人机接口设备,主要是指一些人与计算机进行交互的设备,如键盘,鼠标,游戏杆等;但是HID设备不一定非要是这些人机交互设备,只要符合HID设备级定义规范要求的都可以认为是HID设备。HID设备有以下主要优点:
1) 交换的数据存储在报告的结构内,设备必须支持HID报告格式。
2) 每笔事务可以携带小量或中量的数据。低速设备每笔最大为8字节,全速设备每笔最大为64字节,高速设备每笔最大为1024字节。
3) 有最大速度限制
4) 没有传输速度的保证
如下图,除了USB标准定义的一些描述符外,HID设备还必须定义HID描述符。另外设备和主机的通信是通过报告的形式来实现的,所以还必须定义报告描述符。USB的四种传输方式,HID只支持控制和中断传输方式。
现在分析Transaction20的DATA包的Data域,参照下图。0x07为bLength,表示描述符的长度;0x05为bDescriptorType,表示描述符的类型;0x81为bEndpointAddress,表示这个端点的方向,端点的地址,端点的端点号。0x03为bmAttributes,表示属性信息;0x0005为wMaxPacketSize,表示端点一次能够处理的最大字节数;0x0A为bInterval,表示希望主机轮询自己的间隔时间。
分享到:
相关推荐
从驱动开发网看到一篇《USB枚举详细过程分析》,依据自己的理解和经验对原文稍加改动。本文仅供参考,一些顺序并不是固定的。 本文描述的是Windows系统的USB枚举过程,但对嵌入式系统自行开发的USB主机驱动程序也...
USB详细枚举过程(经测试正确USB详细枚举过程(经测试正确USB详细枚举过程(经测试正确USB详细枚举过程(经测试正确USB详细枚举过程(经测试正确USB详细枚举过程(经测试正确USB详细枚举过程(经测试正确USB详细枚举...
usb的枚举过程详usb的枚举过程详usb的枚举过程详usb的枚举过程详
USB枚举过程图解,详细列出枚举请求的类别和内容
usb枚举过程详解,收发抓包,图解案例,是学习usb驱动开发的好帮手
USB枚举过程介绍.pdf USB枚举过程介绍.pdf USB枚举过程介绍.pdf
枚举过程分析
很详细的关于USB设备枚举的图解 USB设备枚举的图解
能很清楚地看到USB的枚举过程,好不容易找到的,现在上载了,好东西大家齐分享!
usb枚举 USB设备枚举过程,USB设备枚举过程,USB设备枚举过程,
比看书文字说明更清晰明了,USB枚举过程图解!!!
使用USB协议分析仪分析USB枚举过程,包括数据包的分析,USB标准描述符的介绍,USB枚举失败常见原因分析等。
USB枚举实例讲解\实例讲解USB的枚举(配置)过程,网上大量介绍用 bus hound 作监控软件,我们为什么不选 bus hound而选 USB Monitor呢,因为 bus hound 在 WindowsXP 环境不能监控 USB 枚举(配置)过程,它只有在...
来源: http://blog.sina.com.cn/s/blog_640029b30100vvor.htmlUSB 设备枚举当一个USB设备插入主机后,会有
2、源代码中的U_Mouse.C文件实现了数据通讯的协议,Chap_9.C含有鼠标枚举所需的各种描述符。 3、上述文件实为USB接口芯片D12开发的经典参考资料及制作USB鼠标的极佳参考原型。 4、阅读源程序前务必先阅读开发评估板...
详细介绍USB的枚举过程,包括各种包和时序的介绍
usb端口枚举,枚举所有usb端口,包括usb hub的usb端口
USB启过程中硬件上电、控制传输获取数据
USB枚举过程 USB Enumeration