网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 控制/MCU >

USB的枚举过程

时间:2023-06-25 14:14

人气:

作者:admin

标签:

导读:每当一个`USB`外设接入主机后,系统会提示用户`USB`设备接入了,并不停的查找对应的驱动文件,如果找到驱动文件,则加载对应驱动;如果没有找到,则提示用户没有对应的驱动,需要...

每当一个USB外设接入主机后,系统会提示用户USB设备接入了,并不停的查找对应的驱动文件,如果找到驱动文件,则加载对应驱动;如果没有找到,则提示用户没有对应的驱动,需要用户主动去配置驱动。

那么主机是如何判断设备类型以及找到对应的设备驱动?在解决这问题之前,先来了解几个概念:

  • 设备描述符 :描述设备的通用信息,如厂商IDD、产品ID和修订ID,支持的设备类、设备子类、适用的协议以及默认端点的最大包大小等。
  • 配置描述符 :描述当前配置中的接口数、支持的挂起和恢复能力以及功率要求。单个物理的USB设备,可以包含一个或者多个配置,不同的配置描述表现出不同的设备功能。
  • 接口描述符 :接口类、子类和适用的协议,接口备用配置的数目和端点数目。USB协议根据功能将不同的接口划分成不同的类,如下:

1:音频类,2:CDC控制类,3:人机接口类(HID),5:物理类,6:图像类,7:打印机类,8:大数据存储类,9:集线器类,10:CDC数据类,11:智能卡类,13:安全类,220:诊断设备类,224:无线控制类,254:特定应用类,255厂商定义的设备。

  • 端点描述符 :描述端点地址、方向和类型、支持的最大包大小。主机只能通过端点和设备通信。主机通过USB地址+端点号来寻址,确定数据最终是发到那个端点。

0号端点是个特殊端点,通常称作控制端点,用户设备的初始化

我们来看一下下面这个图,描述了设备描述符、配置、接口以及端点个层次包含关系。

图片

USB各描述符层次关系

我们可以看到,最顶层的设备描述符包含一个USB设备的所有信息,也就是说可以通过设备描述符依次获取到整个USB设备的信息.

枚举的整个过程大概就是这样:

  1. 获取设备描述: 获取设备基本信息,并获取配置描述符。
  2. 获取配置信息: 根据配置描述获取到接口描述
  3. 获取接口描述: 根据接口描述,得到端点描述符
  4. 获取端点描述: 得到端点描述符

以上只是个基本过程,大体上要识别一个USB设备,这几步骤是必须的。

那么这几步骤具体是怎么完成的的?说到这就得说说SETUP过程,枚举过程中每次HOST和Device的交互,都是通过SETUP来完成的。下来详细说说这SETUP过程, 整个过程分为三个阶段:

1. CMD阶段(SETUP阶段)

数据方向:HOST->DEVICE单方向,这就是为什么USB所有的动作都必须是由HOST发起的原因

HOST发出的都是固定的8字节,每个字节代表不同含义。

每个字节含义解释

2. DATA阶段

数据方向双方向:HOST<->DEVICE。数据传输方向由CMD命令决定。

数据阶段是可有可无的,具体根据命令字的类型,比如:设置地址命令,是没有数据阶段,Device端接收命令成功,后设置地址,如果地址设置成功则返回ACK信号,失败则是NAK信号。

3. ACK阶段

数据双方向:HOST<->DEVICE。比如设置地址的命令,DEVICE端设置完成之后需要给HOST回复ACK/NAK信号.

4. SETUP实例

下图是USB协议分析仪解析出的获取描述符的过程(这里主要关注软件部分,图例中设置数字标号的部分):

  • 图中标号1: 命令阶段,主机发送获取描述符指令,请求获取设备描述符.
  • 图中标号2: 数据阶段(Device->Host),设备回送设备描述信息.
  • 图中标号3: 数据阶段(Device->Host),在USB1.1设备中,0号端点的BUFFER都比较小,单次不能把数据发送完成,需要多次
  • 图中标号4: ACK阶段(Host->Device),主机告诉设备数据正确接收完成

图片

获取设备描述符

HOST端主机软件就是通过以上SETUP过程,一步一步完成整个枚举过程。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信