天天看点

usb_control_msg参数详解【转】

<a href="http://hi.baidu.com/zengzhaonong/blog/item/6bb44682452a4da00df4d245.html" target="_blank">usb_control_msg()</a>

struct usb_ctrlrequest

|-----------------------|

| __u8    bRequestType -|

| __u8    bRequest     -|

| __le16 -wValue       -|

| __le16 -wIndex       -|

| __le16 -wLength      -|

这个数据结构就是SETUP信包的内容,而缓冲区的内容,就是随后的数据信包的内容。

---------------------------------------------------------------

bRequestType

    D7     数据的传输方向:0表示从主机到设备; 1表示从设备到主机;

    D6~5   命令的类型:   0表示标准命令;    1表示类命令;      2表示厂商提供的命令; 3保留;

    D4~0   接收对象;     0表示设备;       1表示接口;       2表示端点;         3表示其他;

bRequest

    命令的序号(其实就是命令);所有的命令都是以不同编码值的方式传递给设备的,bRequest就表示USB命令的编码值

wValue, wIndex

    这两个字段对于不同的命令有不同的含义

wLength

    表示在完成命令控制传输的数据阶段,要求传输数据的字节长度。一般不论是输入还是输出都要求给出准确的数字。当命令不需要传输数据时,此字段设为0

USB标准命令

命令            bReuestType bRequest         wValue      wIndex     wLength     数据         

Get_Descriptor 1000 0000b -GET_DESCRIPTOR   描述符类型   -0或语言ID --描述符长度 --描述符         

                                           -描述符的索引号 

wValue   高8位表示描述符类型; 低8位表示描述符索引号

GET_DESCRIPTOR = 6

GetHubdescriptor = 0XA0

Get_Descriptor = 0X80

bRequestType    bRequest   wValue   wIndex   wLength

80              6          100      0        12

80              6          200      0        9

80              6          300      0        FF

80              6          301      409      FF

80              6          302      409      FF

80              6          303      409      FF

100        表示获取设备描述符usb_device_descriptor

200        表示获取配置描述符usb_config_descriptor

300        表示获取字符描述符

           301        iSerialNumber

           302        iProduct

           303        iManufacturer

【新浪微博】 张昺华--sky

【twitter】 @sky2030_

【facebook】 张昺华 zhangbinghua

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

继续阅读