当前位置: 首页 > news >正文

USB 基本描述符

本篇文章带大家学习usb的各种标准描述符,可能有些枯燥,但是熟悉了之后就了解了这些信息是如何构建出usb的四通八达的设备使用的,你可以理解描述符就是设备的简历,供host来查阅,相当于之前在dts里面配置的node信息跑到设备本身上了,这样才能实现热拔插的效果,当然,每个类专属的描述符这里暂时没有篇幅介绍

设备描述符(Device Descriptor)

  • 作用:描述整个 USB 设备的总体信息,包括厂商、产品、支持的 USB 版本等。

  • 特点

    • 每个设备只有一个设备描述符

    • 主机在 GET_DESCRIPTOR 请求时会优先读取它

  • 关键字段

    • bLength:描述符长度(固定 18 字节)

    • bDescriptorType:类型(0x01 表示设备描述符)

    • bcdUSB:支持的 USB 版本(如 0x0200 表示 USB 2.0)

    • idVendor / idProduct:厂商 ID 和产品 ID

BOS 描述符(Binary Object Store Descriptor)

  • 作用:USB 3.x 设备的扩展描述符集合,用于声明设备支持的高级特性(如 USB 2.0 Extension、SuperSpeed Capability、Container ID 等)。

  • 层级

    • BOS Descriptor

    • Device Capability Descriptor(可有多个)

一个设备能力描述符的格式如下,感觉有一点学习pcie搞一堆cap的感觉

总共就是这些个能力

挑几个经典的能力讲一下

USB 2.0 Extension

SuperSpeed USB Device Capability

Container ID

Platform Descriptor

SuperSpeedPlus USB Device Capability

Precision Time Measurement

Configuration Summary Descriptor

配置描述符(Configuration Descriptor)

  • 作用:描述设备的一种具体工作配置(包括接口和端点结构)。

  • 特点

    • 一个设备可以有多个配置,但通常只有一个

    • 切换配置需要重新枚举

  • 关键字段

    • wTotalLength:该配置下所有子描述符(接口 + 端点)的总长度

    • bNumInterfaces:接口数量

    • bmAttributes:供电方式、是否支持远程唤醒

接口关联描述符(Interface Association Descriptor (IAD))

  • 作用 将一组相关接口描述符绑定为一个功能单元(Function),方便操作系统识别为同一逻辑设备(如 USB 复合设备中的 CDC ACM)。

  • 特点

    • 解决一个功能需要多个接口的问题(例如 CDC ACM 需要一个通信接口和一个数据接口)

    • 必须放在关联的第一个接口描述符前面

    • 在 USB 2.0 起引入

  • 常见字段

    • bFirstInterface:关联的第一个接口号

    • bInterfaceCount:接口数量

    • bFunctionClass / bFunctionSubClass / bFunctionProtocol:功能类别信息

    • iFunction:功能字符串索引

接口描述符(Interface Descriptor)

  • 作用:描述某个功能接口,比如一个接口可以代表 HID 键盘、UVC 摄像头视频流等。

  • 特点

    • 一个配置可以包含多个接口

    • 每个接口可以有多个备用设置(Alternate Setting),用于切换不同带宽或功能

  • 关键字段

    • bInterfaceNumber:接口编号

    • bAlternateSetting:备用设置编号

    • bNumEndpoints:端点数量(不包括端点 0)

    • bInterfaceClass / bInterfaceSubClass / bInterfaceProtocol:接口类信息(决定驱动匹配)

端点描述符(Endpoint Descriptor)

  • 作用:描述 USB 通信中的端点属性(除控制端点 0 外的其他端点)。

  • 关键字段

    • bEndpointAddress:端点地址(高位表示方向 IN/OUT,低位表示端点号)

    • bmAttributes:传输类型(控制、批量、同步、等时)

    • wMaxPacketSize:最大包长度

    • bInterval:轮询间隔(对中断/同步传输有意义)

超高速端点伴随描述符(SuperSpeed Endpoint Companion Descriptor)

  • 作用 为 USB 3.0(SuperSpeed)端点提供额外的能力信息,例如最大包数、多包事务支持等,用于补充标准端点描述符。

  • 特点

    • 仅在 USB 3.0 及以上版本存在

    • 和标准端点描述符成对出现,紧跟在它后面

    • 提供 SuperSpeed 模式下额外的传输性能参数

  • 常见字段

    • bMaxBurst:一次事务中可连续传输的最大包数(0 表示 1 个包)

    • bmAttributes:额外属性(如多包事务、多流支持)

    • wBytesPerInterval:等时传输时,每个服务间隔可传输的最大字节数

超高速加 等时传输端点 伴随描述符(SuperSpeedPlus Isochronous Endpoint Companion Descriptor)

  • 作用 为 USB 3.1/3.2(SuperSpeedPlus)等时传输端点提供更精细的性能参数,例如更高带宽、多倍采样等。

  • 特点

    • 仅在 SuperSpeedPlus(10Gbps / 20Gbps)模式下使用

    • 专门用于 等时(Isochronous) 端点

    • 紧跟在 SuperSpeed Endpoint Companion Descriptor 后面

  • 常见字段

    • wReserved:保留字段(对齐/扩展用)

    • dwBytesPerInterval:每个服务间隔的最大传输字节数(32 位,支持更大值)

字符串描述符(String Descriptor)

  • 作用:提供可读的字符串信息,如厂商名、产品名、序列号等。

  • 特点

    • UTF-16LE 编码

    • 索引由设备/配置描述符中的字段给出

  • 常见类型

    • iManufacturer:厂商名

    • iProduct:产品名

    • iSerialNumber:序列号

unicode版本

http://www.lryc.cn/news/617795.html

相关文章:

  • TRL - Transformer Reinforcement Learning SFTTrainer 和 SFTConfig
  • AI(2)-神经网络(激活函数)
  • 当生产环境卡成 PPT:Spring Boot 线程 Dump 捉妖指南 - 第544篇
  • 【09-神经网络介绍2】
  • 数据结构-排序(2)
  • 【排序算法】⑦归并排序
  • 用Python从零开始实现神经网络
  • 【08-神经网络介绍】
  • STM32 HAL库 HAL_TIM_OC_Start函数解读
  • maven项目打包成sdk后在别的项目使用
  • 深度解析三大HTTP客户端(Fetch API、Axios 和 Alova)——优劣与选择策略
  • 【03】厦门立林科技——立林科技 嵌入式 校招笔试,题目记录及解析
  • REDIS 各种数据结构有什么作用?都能干什么?
  • 写一篇Ping32和IP-Guard的对比,重点突出Ping32
  • 使用行为树控制机器人(一) —— 节点
  • 芯片学习 8 :IP集成、cluster、lint
  • 大语言模型(LLM)核心概念与应用技术全解析:从Prompt设计到向量检索
  • AI入门学习--如何写好prompt?
  • MySQL 数据操作全流程:创建、读取、更新与删除实战
  • 高精度蓝牙定位:技术、应用与未来发展
  • 【Docker实战进阶】Docker 实战命令大全
  • 从零构建企业级K8S:高可用集群部署指南
  • LeetCode算法日记 - Day 8: 串联所有单词的子串、最小覆盖子串
  • kubeadm搭建生产环境的双master节点k8s高可用集群
  • Android视频编辑方案测评:轻量化剪辑工具的性能表现
  • LAZADA跨境电商自养号测评环境搭建:安全与合规的底层逻辑解析
  • Centos8系统在安装Git包时,报错:“没有任何匹配: git”
  • 【图像处理基石】UE输出渲染视频,有哪些画质相关的维度和标准可以参考?
  • LVPECL、LVDS、LVTTL、LVCMOS四种逻辑电平标准的全面对比
  • redis(1)-基本概念