usb设备描述符包
来源:互联网 发布:软件性能测试分类 编辑:程序博客网 时间:2024/05/16 17:15
设备描述符配置包
在USB通讯里,从主控器发出来的第一个配置包就是设备描述符配置包,目的只有一个,就是获取插入的USB属性,以便加载合适的驱动程序。现在就来详细地分析一下设备描述符包的定义。
在USB2.0的协议里找到9.3 USB Device Requests里就找到这个结构的定义,这里我使用C的定义结构如下:
typedef struct _USB_SETUP_PACKET
{
REQUEST_TYPE bmRequestType;
BYTE bRequest;
WORD_BYTE wValue;
WORD_BYTE wIndex;
WORD wLength;
} USB_SETUP_PACKET;
bmRequestType是包含有下面几方面的内容:
D7 D6 D5 D4 D3 D2 D1 D0
在这一个字节里,又按位分为:
D7位是表示后面传送数据的方向位。
当D7等于0时,表示后面的数据是从主控器发送到USB设备。在PC里,就是从PC机发送到USB的设备。
当D7等于1时,表示后面的数据是从USB设备发送到主控器。在PC里,就是从USB设备发送到USB设备。在上次里,我收到并显示出来的数据是80,就表示从USB设备里发送数据给PC。在这里再次给出上一次的包数据:
80 06 00 01 00 00 40 00
这里的80,就是D7位为1。
D6-D5位是请求主分类型
0 是表示标准的请求。
1 是表示类别的请求。
2 是表示厂商的请求。
3 是保留。
D4-D0位是表求接收这个包的接口。
0 是表示USB设备接收。
1 是表示接口接收。
2 是表示端点接收。
3 是表示其它接收,不知道的。
4-31是保留。
bRequest是本描述符的请求类型,也就是后面发送的数据是什么样的东西。由于USB里有很多配置信息,比如获取设备描述符,又有设置USB地址等等,就是通过这个字节来区分的。
从USB协议里查找表9-4,就可看到如下的编码:
GET_STATUS 0
CLEAR_FEATURE 1
Reserved for future use 2
SET_FEATURE 3
Reserved for future use 4
SET_ADDRESS 5
GET_DESCRIPTOR 6
SET_DESCRIPTOR 7
GET_CONFIGURATION 8
SET_CONFIGURATION 9
GET_INTERFACE 10
SET_INTERFACE 11
SYNCH_FRAME 12
在上面的数据包里,看到它的内容是06,那么它就是GET_DESCRIPTOR类型。也就是主控器想读取USB设备的描述符,到这里就已经分析出来的意思,就是主控器想读取USB描述符,但还不知道是什么描述符的内容。
- usb设备描述符包
- USB设备描述符
- USB设备描述符
- USB协议深入分析 设备描述符配置包
- USB协议深入分析 设备描述符配置包 和 返回设备描述符
- USB协议深入分析 设备描述符配置包 和 返回设备描述符
- USB Key 设备描述符
- USB Mouse 设备描述符
- USB设备的描述符
- USB设备描述符总结
- usb 设备描述符举例说明
- USB设备开发---- usb描述符概述
- USB设备开发---- usb描述符概述 .
- USB设备开发---- usb描述符概述
- USB设备开发---- usb描述符概述
- USB设备开发---- usb描述符概述
- USB设备和设备描述符
- 龙芯软件开发(34)- USB协议深入分析 设备描述符配置包
- SGU 492 经典数位dp
- threadid=1: thread exiting with uncaught exception
- IO/输入输出
- 灰卡测白平衡使用方法
- Win7下安装使用VC6.0
- usb设备描述符包
- 设计模式之Strategy(策略)
- 【数据恢复】详解ORA-8103错误
- ofbiz SCREEN处理过程记录,以及查询相关的类
- 一个比较通用的java删除文件和文件夹的方法
- 【数据恢复】利用构造ROWID实现无备份情况下绕过ORA-1578、ORA-8103、ORA-1410等逻辑/物理坏块问题
- android EditText IMEOption
- 使用C风格字符串你必须知道的几点
- idea里面jsp没有代码提示怎么办?