zoukankan      html  css  js  c++  java
  • [国嵌攻略][162][USB协议分析]

    USB设备逻辑结构

    在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。设备通常有一个或多个配置,配置通常有一个或多个接口,接口通常有零个或多个端点。                        

     

    USB设备描述符

    当我们把USB设备(例如USB鼠标)插到我们的PC时,主机能够自动识别出我们的USB设备类型。在每一个USB设备内部,包含了固定格式的数据,通过这些数据,USB主机就可以获取USB设备的类型、生产厂商等信息。这些固定格式的数据,我们称之为USB描述符。标准设备有5种USB描述符:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符。这些描述符在USB设备内部的寄存器中,供主机来调取查看。

    一个USB设备只有一个设备描述符,设备描述符的长度为18个字节。

    1.重要的设备描述符有:

    bDeviceClass:类型代码

    bDeviceSubClass:子类型代码

    idVendor:供应商ID

    idProduct:产品ID

    通过类型代码和子类型代码就可以确定USB设备的类型。

    2.重要的配置描述符有:

    bNumInterfaces:配置所支持的接口数,指该配置设备配置的接口数量,也表示该配置下接口描述符的数量。

    USB数据通讯

    一个transfer(传输)由一个或多个transaction(事务)构成,一个transaction(事务)由一个或多个packet(包)构成,一个packet(包)由一个或多个sync(域)构成。

    1.传输数据通信

    USB的数据通讯首先是基于传输(transfer)的,传输的类型有:中断传输、批量传输、同步传输、控制传输。

    2.事务数据通讯

    一次传输由一个或多个事务(transaction)构成,事务可以分为:in事务、out事务、setup事务。

    3.包数据通讯

    一个事务由一个或多个包(packet)构成,包可分为:令牌包(setup)、数据包(data)、握手包(ack)、特殊包。

    4.域数据通讯

    一个包由多个域构成,域可分为:同步域(sync)、标识域(pid)、地址域(addr)、端点域(endp)、帧号域(fram)、数据域(data)、校验域(crc)。

    USB设备枚举

    USB设备在正常工作以前,第一件要做的事就是枚举。枚举是让主机认得这个USB设备,并且为该设备准备资源,建立好主机和设备之间的数据传递通道。

    1.获取设备描述符

    2.复位

    3.设置地址

    4.再次获取设备描述符

    5.获取配置描述符

    6.获取接口、端点描述符

    7.获取字符串描述符

    8.选择设备配置

  • 相关阅读:
    找出有序数组中绝对值最小的数
    warning:deprecated conversion from string constant to 'char *' 解决方案
    Wordnet 与 Hownet 比较
    心灵鸡汤
    冒泡排序
    .NET加密配置文件connectionStrings节点
    C#基础知识之方法重载总结
    [C#]工具类—FTP上传下载
    C#基础知识-对象初始化顺序
    自定义Dictionary支持线程安全
  • 原文地址:https://www.cnblogs.com/d442130165/p/5294397.html
Copyright © 2011-2022 走看看