• usb_control_msg参数详解【转】


    转自:http://blog.chinaunix.net/uid-25909619-id-3243059.html

    usb_control_msg()

    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

  • 相关阅读:
    JavaScript设计模式样例八 —— 适配器模式
    JavaScript设计模式样例七 —— 原型模式
    JavaScript设计模式样例六 —— 抽象工厂模式
    JavaScript设计模式样例五 —— 建造者模式
    JS比较两个时间的时间差
    使用nginx实现纯前端跨越
    npm的使用总结
    优雅的格式化时间显示
    优雅的封装ajax,含跨域
    将自己的域名代理到Gitpages
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/6296917.html
Copyright © 2020-2023  润新知