USB总线枚举过程

Linux USB开发整理和随笔 本文主要介绍USB一些基础硬件理论原理和Linux下软件框架分析。其中硬件理论部分的介绍大多摘自网络(笔者是个整理者),主要针对影响理解源码和基本的流程而介绍。软件源码介绍部分是笔者分析源码而来。 阅读详情

    (1)集线器检测新设备
    主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。(集线器端口的两根信号线的每一根都有15kΩ的下拉电阻,而每一个设备在D+都有一个 1.5kΩ的上拉电阻。当用USB线将PC和设备接通后,设备的上拉电阻使信号线的电位升高,因此被主机集线器检测到。)
    (2)主机知道了新设备连接后
    每个集线器用中断传输来报告在集线器上的事件。当主机知道了这个事件,它给集线器发送一个Get_Status请求来了解更多的消息。返回的消息告诉主机一个设备是什么时候连接的。
    (3)集线器重新设置这个新设备
    当主机知道有一个新的设备时,主机给集线器发送一个Set_Feature请求,请求集线器来重新设置端口。集线器使得设备的USB数据线处于重启(RESET)状态至少10ms。
    (4)集线器在设备和主机之间建立一个信号通路
    主机发送一个Get_Status请求来验证设备是否激起重启状态。返回的数据有一位表示设备仍然处于重启状态。当集线器释放了重启状态,设备就处于默认状态了,即设备已经准备好通过Endpoint 0 的默认流程响应控制传输。即设备现在使用默认地址0x0与主机通信。
    (5)集线器检测设备速度
    集线器通过测定那根信号线(D+或D-)在空闲时有更高的电压来检测设备是低速设备还是全速设备。(全速和高速设备D+有上拉电阻,低速设备D-有上拉电阻)。
    以下,需要USB的firmware进行干预
    (6)获取最大数据包长度
    PC 向address 0发送USB协议规定的Get_Device_Descriptor命令,以取得却缺省控制管道所支持的最大数据包长度,并在有限的时间内等待USB设备的响应,该长度包含在设备描述符的bMaxPacketSize0字段中,其地址偏移量为7,所以这时主机只需读取该描述符的前8个字节。注意,主机一次只能列举一个USB设备,所以同一时刻只能有一个USB设备使用缺省地址0。
    以下操作雷同,不同操作系统设定时延是不一样的,比如说win2k大概是几毫秒,如果没有反应就再发送一次命令,重复三次。
    (7)主机分配一个新的地址给设备
    主机通过发送一个Set_Address请求来分配一个唯一的地址给设备。设备读取这个请求,返回一个确认,并保存新的地址。从此开始所有通信都使用这个新地址。
    (8)主机向新地址重新发送Get_Device_Descriptor命令,此次读取其设备描述符的全部字段,以了解该设备的总体信息,如VID,PID。
    (9)主机向设备循环发送Get_Device_Configuration命令,要求USB设备回答,以读取全部配置信息。
    (10)主机发送Get_Device_String命令,获得字符集描述(unicode),比如产商、产品描述、型号等等。
    (11)此时主机将会弹出窗口,展示发现新设备的信息,产商、产品描述、型号等。
    (12)根据Device_Descriptor和Device_Configuration应答,PC判断是否能够提供USB的Driver,一般win2k能提供几大类的设备,如游戏操作杆、存储、打印机、扫描仪等,操作就在后台运行。但是Win98却不可以,所以在此时将会弹出对话框,索要USB的 Driver。
    (13)加载了USB设备驱动以后,主机发送Set_Configuration(x)命令请求为该设备选择一个合适的配置(x代表非0的配置值)。如果配置成功,USB设备进入“配置”状态,并可以和客户软件进行数据传输。
    此时,常规的USB完成了其必须进行的配置和连接工作。查看注册表,能够发现相应的项目已经添加完毕,至此设备应当可以开始使用。不过,USB协议还提供了一些用户可选的协议,设备如果不应答,也不会出错,但是会影响到系统的功能。

USB2.0、USB3.x、USB4的这些基础知识你知道吗? 本文根据《工业计算机硬件技术支持手册》第12章编写,只是简要介绍USB各个版本的一些基础知识。更多细节请参阅原作。 阅读详情

相关推荐

USB 枚举过程

枚举过程的详细介绍 1、USB主机检测到 USB设备插入后,就会先对设备复位。USB设备在总线复位后其地址为 0 ,这样主机就可以通过地址 0和那些刚刚插入的设备通信。 2、USB主机往地址为 0的设备的端点 0发送获取设备描述符的标准请求(这是一个控制传输的建立过程)。设备收到该请求后,会按照主机请求的参数,在数据过程将设备描述符返回给主机。主机在成功获取到一个数据包的设备描述......

tyustli 3927

USB的枚举过程

当USB device 插入,和 host 连接后,host 会对 device 进行枚举。 通过枚举:获取设备的描述符信息。(主机根据此信息,加载对应驱动,确定通信方式等等) 枚举过程如下: 1、usb host 检测到 usb device 插入后,发送总线复位信号,复位 device。 device 复位完成后,地址为0。 host 向 地址0 的 endpoint 0 发送数据,请求设备描述符。 device 收到主机请求后,发送 设备描述 给 host。 host 接收并确认 device 发来

engineer0的博客 4113

第五篇 USB设备枚举过程(2)

二、复位总线 主机第一次正确接收到设备描述符,就会复位一次总线,接下来发送设置地址的标准请求。 1. 协议分析仪数据 这次复位是正常复位。 如果主机第一次获取设备描述符之后,一直复位(异常复位),很大情况下是因为获取设备描述符的过程有错(返回的数据或者数据长度都有错)!比如:在一次验证FPGA的过程中,设备栈刚移植结束,跑起Demo之后,发现获取设备描述符后,Host一直复位总线,如下: 将数据展开,仔细分析后发现有错:返回的长度和数据内容都有错。 应该是18字节的设备描述符,而这里

渣渣小码农的博客 1960

USB协议学习:5、USB的枚举过程

地址偏移量字段名长度说明0bLength1描述符长度(字节):12H11描述符类型:设备=01H2bcdUSB2USB 规范版本号(BCD 码)41类代码51子类代码61协议代码71端点 0 支持最大数据包长度8idVender2供应商 ID10idProduct2产品 ID12bcdDevice2设备版本号(BCD 码)141供应商字符串描述符索引值15iProduct1产品字符串描述符索引值161。

嵌入山脊的博客 8937

智慧楼宇解决方案-全套大合集

智慧楼宇解决方案,楼宇能耗-环境-设备统一管控解决方案。

byte58的博客 2592

nmap、X-Scan漏洞扫描和Metasploit中用永恒之蓝漏洞入侵靶机并上传冰河

利用nmap、X-Scan扫描靶机的漏洞,在Metasploit中用扫描出的永恒之蓝漏洞入侵靶机,建立连接后上传冰河木马控制靶机,最后用冰河陷阱清除靶机的冰河木马,记一次完整的入侵控制实验。

m0_59302403的博客 4408

USB枚举及其描述符(1)— USB 枚举/断开过程

简单理解USB上电枚举的过程

qq_48338512的博客 1279

基于Python实现学习进度跟踪系统

{{ task }}: {{ "%.1f"|format(hours) }}小时

寒寒豆豆软件公司的博客 196

USB总线专题(四)——枚举过程

前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。 1. 定义 枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。枚举过程包括设备地址的分配,从设备读取设备描述符,分配加载驱动程序,选择规定的设备功耗要求和接口配置信息。 USB 架构中, hub 负责检测设...

霁风AI 2328

计算机视觉论文复现指南:从理论到可运行代码的保姆级教程

计算机视觉论文复现指南:从理论到可运行代码的保姆级教程​ ,人工智能,计算机视觉,大模型,AI,本文围绕计算机视觉论文复现展开,介绍从理论到可运行代码的全流程。先强调复现的重要性,再讲解复现前的准备,包括明确目标、构建工具链;接着说明代码获取分析、环境配置调优、调试运行技巧及结果验证优化方法,还推荐了高效工具,提及复现中的伦理规范。旨在助读者掌握复现方法论,实现从经典模型到前沿论文的复现,推动学术成果落地。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 12万+

Qt实现思维导图功能5『纵向分布模式』

思维导图纵向分布模式:模式一

浮生流年的博客 1062

sm总线控制器找不到驱动程序_USB总线专题(四)——枚举过程

1. 定义枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。枚举过程包括设备地址的分配,从设备读取设备描述符,分配加载驱动程序,选择规定的设备功耗要求和接口配置信息。USB 架构中, hub 负责检测设备的连接和断开,利用其中断 IN 端点 (Interrupt IN Endpoint) 来向主机(Host)报告。在系统启动...

weixin_39938875的博客 214

弱网、高热、只有 32MB 内存:恶劣环境下嵌入式 SoC 音视频开发的“不死”法则

永远不要假设。你申请一个 1920 宽的图像,硬件为了对齐(比如 16 字节对齐或 256 字节对齐),实际分配的一行可能有 1936 甚至是 2048 字节。那个多出来的部分叫Padding。如果你写代码时用来计算数据量,或者用Width来做指针偏移:恭喜你,你的画面会像被风吹歪的百叶窗一样,产生斜切畸变。永远使用VB_CONF结构体里返回的u32Stride字段。这是区分新手和老手的试金石。第六章 ISP 调优(Tuning)实战:为什么你调出的画面像个“鬼片”?

大模型大数据攻城狮的专栏 1770

Linux之USB驱动框架-USB总线设备识别与枚举过程详解

本文详解Linux USB驱动框架中设备识别与枚举的全过程,涵盖硬件信号检测、地址分配、描述符读取、驱动匹配等关键环节。通过分析USB总线工作原理和内核实现机制,帮助开发者深入理解USB设备在Linux系统中的初始化与配置流程,并提供实用的调试技巧。

ipfs8storage的博客 609

使用 Visual Studio Code 搭建 SAP UI5 本地开发环境

工欲善其事,必先利其器。时至今日,SAP 提供了非常多的 SAP UI5 开发工具,既包含本地搭建的,也包含浏览器里远端使用的工具,比如 WebIDE 和 Business Application Studio. 我们访问下面这个链接,就能找到所有这些工具的安装或者配置步骤: https://tools.hana.ondemand.com/#sapui5 如果想选择本地开发,SAP 推荐的工具是 Visual Studio Code,也就是本文要介绍的内容。 也可以下载 WebIDE 的本地安装包,将其安

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1万+

[xboard-ok210] 44 s5pv210开发板介绍和对比

文章目录前言四大S3C6410提供商友坚开发板UT-S5PV210华天正(润尔)real210飞凌开发板ok210九鼎x210友善之臂开发板tiny210mini210smart210天嵌开发板tq210sate210xboardxboardxboard之ok210 前言 四大S3C6410提供商 友坚开发板 UT-S5PV210 华天正(润尔) real210 飞凌开发板 ok210 九鼎 x210 友善之臂开发板 tiny210 mini210 smart210 天嵌开发板 tq210 sate210

鹰之翔 287

USB具体通讯过程(含枚举过程)

/*********************************************************************** USB入门系列: 1、USB行业标准介绍 2、USB具体通讯过程 3、USB中端点详细了解 4、USB传输之控制传输 ......(待补充) *************************************************...

boyemachao的专栏 424

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

USB枚举过程

USB枚举过程 1. 枚举是什么? 枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB的枚举过程,只要枚举成功了,那么就已经成功大半了。 USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机...

ll148305879的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

USB开设备开发学习之二: USB具体通讯过程(含枚举过程)

原文:https://blog.youkuaiyun.com/go_str/article/details/80802452  前言     现在刚开始接触USB的开发,零零散散学习了一些USB基础知识,但是却得不到连贯。在这个学习过程中首先困惑的就是USB通讯过程究竟是什么样子的,我觉得做一下的了解后整合后记录下来,首先从USB整体结构基础来入手直到整个通讯过程。可能有理解不到位的地方,望各位能够指正,我...

chunfangzhang的博客 3738

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Windows下usb接口驱动技术(一)

Windows下usb接口芯片的驱动技术 一、        USB概述   USB的英文全称为Universal Serial Bus,中文含义是通用串行总线,是由Conpaq、DEC、IBM、Inter、Microsoft、NEC和Northen Telecom等公司为简化PC与外设之间的互连而共同研究开发的一种免费的标准化连接器,它支持各种PC与外设之间的连接,还可实现数字多媒体集成。

蜗牛的家 5544

《USB技术应用与开发》第二讲:连接和枚举

(1)正常工作:总线上存在周期性SOF包。当主机和USB设备连接后,如果不操作设备但是设备仍然挂载在主机的端口下面,需要随时进行传输,此时USB总线就处于正常工作状态。总线上会有周期性的soft包出现(这个包就是第一讲抓包演示中每一帧开始的令牌包),在全速中1ms出现一次,高速中是125us出现一次。(2)总线复位:总线维持SEO状态>10ms是由主机控制器或集线器的下游端口产生,用于驱动D+和D-都处于0V,就是SE0状态。

小醒爱硬件的博客 1230

《Linux总线、设备与驱动》USB设备发现机制

一、USB总线驱动 kernel/drivers/usb/core/driver.c EXPORT_SYMBOL_GPL(usb_register_driver); EXPORT_SYMBOL_GPL(usb_deregister); EXPORT_SYMBOL_GPL(usb_register_device_driver); EXPORT_SYMBOL_GPL(usb_deregiste

程序改变生活 1万+

usb枚举过程 enumeration 流程说明

先转载一篇关于usb enumeration不错的文章。 USB枚举过程 USB Enumeration     USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机(Host)报告。在系统启动时,主机轮询它的根hub(Root Hub)的状态看是否有设备(包括子hub和子hub上的设备)连接。USB总线拓扑结构见

阿戟哥哥的专栏 6734

USB学习

1、总线枚举 当一个USB设备接入USB或从USB上拆除时,主机使用一个称之为总线枚举的过程和管理必须的设备状态变化。当一个USB设备接入后,讲采取下列动作: (1)现在该USB设备所接入的集线器,通过一个其状态变化管道的回应,可以向主机报告该事件。这时,USB设备处于连接状态,而连接它的端口则被禁用。 (2)主机通过询问集线器来确定变化的真实性质 (3)既然主机已经知道了新的设备所接入的...

weixin_42164528的博客 486
上一篇: Force Windows spool file use jobid as its name
下一篇: 缺少streams.h的解决方法和DirectShow开发环境的搭建
会思考的草
博客等级 码龄25年 208粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值