usb设备驱动之设备初始化(设备枚举)

lytwajue lytwajue     2022-09-06     232

关键词:

USB设备从接入HUB到正常工作之前。都属于设备枚举阶段。所谓设备枚举。就是让host控制器认识USB设备,并为其准备资源。建立好主机与设备间的数据传递机制。

该阶段的工作,是USB通信协议规定的,所以属于ISO标准流程。设备枚举阶段也相应了USB设备的五种状态。

设备枚举阶段分为例如以下8个步骤:

  1. 获取设备描写叙述符
  2. 复位
  3. 设置地址
  4. 再次获取设备描写叙述符
  5. 获取配置描写叙述符
  6. 获取接口。端点描写叙述符
  7. 获取字符串描写叙述符
  8. 选择设置配置
当中,步骤1与4都是获取设备描写叙述符,两者有什么差别?
步骤1中仅仅取得设备描写叙述符的固定长度字段,而步骤4是获取设备描写叙述符的所有字段。

通过上述的8个步骤。能够看出:在设备枚举阶段,主机控制器获取了USB设备的全部具体信息(5大描写叙述符),然后为其分配了资源(设置地址)。在设备枚举阶段完毕之后。USB设备就能与USB主机之间进行数据交换了。


同一时候,我们知道USB设备接入USB主机之后有5种状态:
  1. Attached
  2. Powered
  3. Default
  4. Addressed
  5. Configured
这5中状态与USB设备枚举的相应关系是:
  • USB设备插入接口之后,处于Attached状态;
  • USB主控制器会给USB设备供电,此时处于Powered状态;
  • 设备枚举阶段的步骤2。复位操作之后,设备处于Default状态;
  • 设备枚举阶段的步骤3。设置地址操作之后,设备处于Addressed状态。
  • 设备枚举结束之后,设备处于Configured状态。


usbcomposite组合设备之耳机+多路cdc

...符修改配置描述符修改接口描述符修改类的注册接口修改初始化接口多路CDC耳机类修改数据流转接口注意事项代码仓库最近看USB方面的协议,从实现USB麦克风、多串口、USB麦克风+扬声器,到目前的USB耳机+多路CDC,对USB的拓扑方... 查看详情

windows - 如何枚举所有连接的 USB 设备的设备路径?

】windows-如何枚举所有连接的USB设备的设备路径?【英文标题】:windows-HowtoenumerateallconnectedUSBdevices\'devicepath?【发布时间】:2012-12-0508:02:10【问题描述】:我正在尝试使用SetupDi函数枚举所有连接的USB设备的设备路径。设备路径是... 查看详情

初始化marvell模块驱动,包括sdio设备枚举,加载设备固件等操作

初始化marvell模块驱动,包括SDIO设备枚举,加载设备固件等操作初始化marvell模块驱动,包括SDIO设备枚举,加载设备固件等操作初始化marvell模块驱动,包括SDIO设备枚举,加载设备固件等操作  查看详情

有没有办法保存 USB 设备,以便在重新插入后可以防止重新枚举?

】有没有办法保存USB设备,以便在重新插入后可以防止重新枚举?【英文标题】:IsthereawaytosaveaUSBdevicesothatre-enumerationcanbepreventedafterreplugging?【发布时间】:2012-06-0803:04:59【问题描述】:首先,我们正在使用将自身绑定到USB设备... 查看详情

usb枚举流程

...线驱动分析如下图所示,以windows为例,我们插上一个没有USB设备驱动的USB,就会提示你安装驱动程序为什么一插上就有会提示信息?是因为windows自带了USB总线驱动程序,USB总线驱动程序负责:识别USB设备,给USB设备找到对应的驱动程序新... 查看详情

usb枚举过程

 0.枚举流程  •连接了设备的HUB在HOST查询其状态改变端点时返回对应的bitmap,告知HOST某个PORT状态发生了改变。  •主机向HUB查询该PORT的状态,得知有设备连接,并知道了该设备的基本特性。   ... 查看详情

stm32f4usb项目开发详解

...、USB简介1.1、usb通信过程总体概况usb通信步骤总体概况:设备插到主机上主机开始检测设备类型(高速/全速/低速)复位设备主机开始对设备枚举(根据枚举得到的各种信息加载合适的驱动程序,比如根据信息知道是一个鼠标设... 查看详情

usbcomposite组合设备之多路cdc实现(代码片段)

USBComposite组合设备之多路CDC实现USB复合设备与组合设备区别效果展示修改相关配置修改配置项修改设备描述符修改配置、接口、端点描述符接口修改FIFO配置知识点FIFO分配注意事项USB复合设备与组合设备区别其实多个接口组合在... 查看详情

usb之设备插入波形变化2(代码片段)

============= 本系列参考  =============《圈圈教你玩USB》、《Linux那些事儿之我是USB》协议文档:https://www.usb.org/document-library/usb-20-specification usb_20_20190524/usb_20.pdf调试工具:BeagleUSB480逻辑分析仪、sys/ke 查看详情

linux / libusb 获取usb设备路径

】linux/libusb获取usb设备路径【英文标题】:linux/libusbgetusbdevicepath【发布时间】:2012-12-2603:09:27【问题描述】:我使用libusb来枚举一些USB设备。现在我想获得“设备路径”。我认为它不叫usbdevice-path,因为我在google上没有成功。如... 查看详情

linux下usb端口和设备的绑定(代码片段)

一、为什么需要绑定?如果系统中同时接入多个USB设备,比如多个USB串口,当每一次系统启动的时候,系统会为每一个插入的USB设备自动升序命名,例如:ttyUSB0、ttyUSB1…,但因为系统枚举USB设备的顺序是不一定的,而应用程序... 查看详情

rdp协议之usb重定向虚拟通道

在RDP远程桌面协议中,USB设备虚拟通道扩展协议用于将USB数据包从终端服务器传输到终端客户端。终端客户端将USB数据包转发到物理USB设备。然后客户端在物理设备重新组装数据包后返回结果。    一般来说,远程... 查看详情

usbcomposite组合设备之麦克风与扬声器(代码片段)

...改配置修改设备描述符修改配置及接口、端点描述符修改初始化函数接口数据处理接口参考效果展示修改USBAudio拓扑输入端点地址:0x81(Microphone)输出端点地址:0x02(Speaker)修改配置USB的FIFO修改/*EN_EP:0x80(64)0x81(Microphone64)0x82(NULLfi... 查看详情

usb驱动之androidusb鼠标驱动(代码片段)

...D是HumanInterfaceDevices的缩写,翻译成中文即为人机交互设备。这里的人机交互设备是一个宏观上面的概念,任何设备只要符合HIDspec都可以称之为HID设备,常见的HID设备有鼠标键盘,游戏操纵杆等等。        usb... 查看详情

usbcomposite组合设备之麦克风与扬声器(代码片段)

...改配置修改设备描述符修改配置及接口、端点描述符修改初始化函数接口数据处理接口参考效果展示修改USBAudio拓扑输入端点地址:0x81(Microphone)输出端点地址:0x02(Speaker)修改配置USB的FIFO修改/*EN_EP:0x80(64)0x81(Microphone64)0x82(NULLfi... 查看详情

usb学习笔记——usb通信过程与枚举过程

...口在USB的集线器端D-,D+都接了下拉电阻,而USB设备端的D-,D+接了上拉电阻,所以当USB设备插入时可以根据集线器端D-,D+上的电压变化来判断是否有USB设备接入。检测到有设备接入后& 查看详情

linux:主机usb设备驱动简析(代码片段)

...初始化6.2USB主机控制器设备对象注册和驱动加载7.LinuxUSB设备驱动加载过程7.1`HUB类设备`驱动加载过程7.2`非HUB类设备`驱动加载过程7.2.1按VID&PID匹配驱动7.2.2按interfaceclass匹配驱动7.2.2其它情形8.参考资料1.前言限于作... 查看详情

Windows 10 - 清除 USB 枚举/驱动程序垃圾

...题描述】:总结我正在使用STM32F072Discoveryboard为自定义USB设备开发固件和PC测试应用程序。该设备包含PC上WinUSB驱动的MicrosoftWindowsCompatibleIDs(WCIDs)toenab 查看详情