精华内容
下载资源
问答
  • USB枚举过程详解

    千次阅读 2020-03-22 09:57:39
    USB枚举过程详解

    1 USB枚举流程
    USB SETUP command的状态阶段的状态包是个ZLP。
    Figure 1-1 Windows枚举USB设备的流程

    2 描述符配置
    2.1 Android
    Android是支持多USB配置描述符的,但是我们平时见到的手机都是一个配置的,接口数按照你在Android状态栏上选择的功能而定。QCOM数据卡设备为了兼容Windows和MacOS,使用了多配置描述符。
    - 设备描述符的bNumConfigurations=1
    - 配置描述符的bNumInterfaces=x,根据用户选择的功能而定

    2.2 iOS
    iOS支持4个USB配置,也即是有4个配置描述符,配置描述符中的bConfigurationValue分别是1、2、3、4,然后每个配置描述符都有自己的接口和端点描述符。
    - 设备描述符的bNumConfigurations=4
    - 配置描述符的bNumInterfaces=x,根据Windows选择哪个配置而定
    - 当我们的电脑上没有安装iTunes时,Windows选择的是配置3,电脑上显示的是PTP Camera,当我们电脑上安装了iTunes时,Windows选择的是配置4
    Figure 2-1 连接iTunes时bushound抓包

    2.3 Windows Phone 8
    WP8的USB功能只支持一个配置,三个接口。WinUSB驱动安装可以使用工具Zadig。
    - 设备描述符的bNumConfigurations=1
    - 配置描述符的bNumInterfaces=3
    - 主要有3个接口:PTP、WinUSB、WinUSB

    3 USB驱动安装工具Zadig
    Zadig - USB driver installation made easy
    https://zadig.akeo.ie/

    其中ie表示Ireland爱尔兰。Zadig基于libwdi(Windows Driver Installer library)开发。

    4 Abbreviations
    ARC:Argonant RISC Core
    AT91SAM9260:SAM means Smart ARM-based Microcontroller
    ATMEL SAMBA:ATMEL Smart ARM-based Microcontroller Boot Assistant
    CC2530:TI ChipCon2530
    DWC2:Design Ware Controller 2,Apple的嵌入式设备,包括iPad和iPhone都是使用的DWC2
    ISP1161:Philips' Integrated host Solution Pairs 1161,“Firms introduce USB host controllers”,https://www.eetimes.com/document.asp?doc_id=1290054
    Quirks:the attributes of a device that are considered to be noncompliant with expected operation
    SL811HS:Cypress/ScanLogic 811 Host/Slave,性能上与ISP1161(Integrated host Solution Pairs 1161)相当
    TDI:TransDimension Inc.,该公司首先发明了将TT集成到EHCI RootHub中的方法,这样对于嵌入式系统来说,就省去了OHCI/UHCI的硬件,同时降低了成本,作为对该公司的纪念,Linux内核定义了宏ehci_is_TDI(ehci);产品UHC124表示USB Host Controller;收购了ARC USB技术;现已被chipidea收购,chipidea又被mips收购
    TLV:TI Low Value,高性价比
    TPS:TI Performance Solution
    TT:Transaction Translator(事务转换器,将USB2.0的包转换成USB1.1的包)

    展开全文
  • 来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey上篇笔记,大家了解了一些枚举相关的概念,本篇笔记将详述 CDC 设备枚举过程,让大家对整体的枚举过程有个概念...

    来源:公众号【鱼鹰谈单片机】

    作者:鱼鹰Osprey

    ID   :emOsprey

    上篇笔记,大家了解了一些枚举相关的概念,本篇笔记将详述 CDC 设备枚举过程,让大家对整体的枚举过程有个概念。

    为了更好到理解并分析接下来的通信流程,鱼鹰首先介绍标准请求和描述符。

    上篇笔记了解了标准请求和描述符是怎么回事,但还不够,还需要更细节的东西。

    首先从标准请求的8字说起:

    第一字节:位图请求信息。

    D7 代表了接下来传输的数据是从主机到从机,还是从机到主机的。我们知道枚举过程使用控制传输,有三个阶段,如果有数据阶段,那么这个阶段的DATA数据是由主机发出还是由从机发出,就看这个位的值了。

    当然了,因为每一次事务都有令牌包存在,所以IN令牌后的数据一定是由从机发出的,但是标准请求的这个位可以让从机做好发送数据或者接收数据的准备。

    D6~D5:代表了请求类型。

    请求类型代表本次请求属于什么类型的请求。目前有三类,标准、类、厂商。标准请求主要有:

    除了标准请求,还有类请求,比如 CDC 类,用到了三种类请求:

    SET_LINE_CODING(0x20)          设置串口波特率、起始位、停止位、流控等信息

    GET_LINE_CODING(0x21)        获取串口波特率、起始位、停止位、流控等信息

    SET_CONTROL_LINE_STATE(0x22)用于设置串口的状态

    厂商请求一般不会用于标准设备,CDC 类就没有用到(如果需要的话,应该也是能发出的)。

    D4~D0:代表了请求类型。

    因为请求的内容可能是面向设备,也可能面向接口、端点,所以这个域确定了本次请求面向的对象,这样设备可以根据请求的对象作相应的措施。

    第二字节:bRequest:请求代码,即上面的几种请求代码,每个请求都会有请求代码,代表了具体请求。

    第三四字节:wValue:这个双字节主要根据bReuest来确定含义,比如如果是获取描述符(GET_DESCRIPTOR),而描述符有很多种,比如设备描述符、字符串描述符、配置描述符,那么到底主机要获取什么描述符?就看这个双字的高字节了。如果高字节为 1,代表获取设备描述符,高字节为 2,代表获取配置描述符。

    总之这个值的具体含义需要根据请求代码来确定,而每一种请求代码都会明确规定wValue具体含义。

    第五六字节:wIndex:这个值和上面一样,也是需要请求代码来确定含义的。比如在获取产品序列号字符串时,这个值代表了语言 ID,告诉从机需要返回什么哪种字符串,当值为0x0409时代表英语。

    第七八字节:wLenth:这个值代表接下来主机会发送或者需要接收字节长度。

    一般来说,主机会根据需要在接下来的数据阶段获取或发送指定长度数据,主机发送的数据因为是由主机控制的,所以可以很容易确定这个值,但是因为主机并不清楚从机到底有多少数据会返回,所以这个值可能会比实际的更大。

    比如第一次获取设备描述符时,因为主机不清楚这个描述符多长,一般会比实际的描述符长度更大,所以如果从机没有足够的数据返回,那么只要返回从机能返回的最大数据即可;

    但是如果主机请求返回的数据比从机实际的数据短,那么从机就按照主机的要求来就行,不必把自己所有的数据返回。

    以上就是标准请求的内容。设备返回的描述符通用格式比较简单:

    第一字节:描述符总长度(包括本字节)

    第二字节:描述符类型(对应标准请求wValue的高字节)

    其余字节就代表了这个描述符的具体内容了,每种描述的具体内格式都不相同,需要根据实际的描述符确定,比如:

    bcdUSB 代表 USB 版本号,比如 0x0110,代表 USB 1.1 版本(bcd编码,即写成十六进制时的版本号),这样主机就知道这个设备只支持全速 12 Mbit/s 那么关于关于高速的请求qualifier(wValue 高字节为6)就不用发送到该设备了,因为发送给设备也肯定会被回复 STALL,那么主机就没必要浪费这个带宽了。

    但是如果你这里写成 0x0200,那么这个设备可能是全速的,也可能是高速的,那么主机就会发送请求来询问是否支持高速,如果设备不支持,回复的描述符设置为0即可。

    接下来的三个字节根据设备属于什么类别来确定,比如 CDC 类,这三个值分别为 0x02 ,0x00,0x00。

    bMaxPacketSize0 确定了端点0的数据包大小,主机可以据此知道设备的传输能力,进而控制传输数据包的大小,不然主机一次发送的数据包太大,那么从机可能无法正确接收。

    idVendor 由 USB-IF 分配,这个值确定了这个设备属于哪个厂家的产品。比如 0xC251,代表了KEIL,只要主机看到了这个代号,就知道这个设备由哪个厂家生产的了,因为这个在USB-IF中挂了号,大家都可以从网上查到。

    和必须购买的 idVendor 不同却类似的是,iProduct 是由厂家自己定义的,可以根据这个来确定这个设备属于哪个产品。

    这个USB设备更新到哪一个版本了?通过bcdDevice 即可确定,也是bcd 编码。

    iManufacture 代表厂商的字符串序号,一般都是 1,这样当主机需要获取厂商的字符串,只要在wValue 的低字节为设置为 1,那么从机就知道该发送什么字符串给主机了。

    iProject 代表产品字符串序号,一般为2。

    iSerialNumber 代表产品序列字符串序号,一般为3。

    为什么从 1 开始编号,而不是从 0 开始呢,这是因为如果设备没有这个字符串的话,可以设置该值为 0,这样主机就知道没有这个字符串,也就不会主动获取这个字符串。

    当然了,即使你告诉了主机有这个字符串存在,主机也是按照需求来获取的,不一定会把所有的字符串描述符都获取回来。

    iNumConfigurations 代表了设备有多少种配置,前面说过,设备可能会在不同时刻的功能表现不一样,那么可以通过该值确定这个设备有多少种配置,一般而言这个值是1,即只有一种配置。毕竟复合设备可以同时满足多功能的要求,没必要使用多种配置来达到多种功能的要求。

    以上就是设备描述符的具体含义,其他描述符比如配置描述符、接口描述符、端点描述符等就自行看鱼鹰给的资料理解即可,只要找到对应描述符的格式说明,分析代码中的描述符数据也不是那么难的事情。

    接下来鱼鹰介绍枚举总体流程。

    主机在对设备复位后,首先会请求获取设备描述符。这个描述符一般为18个字节,但是主机一开始并不知道这个描述符多大(虽然一般是18,但万一不是呢),所以一般主机会以更大的请求长度来获取,而从机根据实际长度18字节返回即可。

    现在我们从多个维度看看这次交互的数据情况:

    从传输事务的角度看:

    从包的角度看:

    从DATA内容看:

    主机发送数据:80 06 00 01 00 00 40 00

    从机回复数据:

    从D+、D-数据线电平变化的角度:

    主机发送(建立阶段):

    从机回复(数据阶段):

    状态阶段:

    现在把整个枚举过程大概图解一遍(其他请求交互的具体情况请看鱼鹰提供的资料):

    数据流截取(鱼鹰提供的《CDC设备完整数据通信.txt》):

    展开全文
  • 1.设备上电 2.检测电压变化,报告主机 3.主机了解连接设备 4.检测所插入的设备是高速还是低速 5.主机通过hub复位设备 6.主机进一步检测全速设备是否是支持高速模式 7.通过Hub建立主机和设备之间的信息通道 8....

    目录

    1.设备上电

    2.Hub检测电压变化,报告主机

    3.主机了解连接设备

    4.主机检测所插入的设备是全速还是低速

    5.主机通过hub复位设备

    6. 主机进一步检测全速设备是否是支持高速模式

    7.通过Hub建立主机和设备之间的信息通道

    8.主机获取默认控制管道的最大数据包长度

    9.主机请求hub再次复位设备

    10.主机给设备分配一个新地址

    11.主机获取并解析设备描述符信息

    12.主机获取字符串描述符

    13.主机获取标准配置描述符

    14.主机获取配置描述符集合

    15.主机为设备挂载驱动并选择一个配置

    16.USB枚举抓包图


    当USB设备连接到或从USB中移除时,主机使用总线枚举过程来识别和管理接入的设备。当USB设备连接到一个已经被上电的端口,采取以下顺序行动:

    1.设备上电

    用户把USB设备插入USB端口(主机下的根hub或主机下行端口上的hub端口)或系统启动时设备上电。此时,USB设备处于加电状态,它所连接的端口是无效的。

    2.Hub检测电压变化,报告主机

    hub会实时监测端口的电平变化,一旦HUB检测到端口有电压变化,hub将利用自己的中断端点将信息反馈给主控制器,告诉主机有设备连接。

    3.主机了解连接设备

    如果有连接/断开事件发生,那么主机会发送一个 Get_Port_Status请求给hub以了解此次状态改变的确切含义。Get_Port_Status等请求属于所有hub都要求支持的hub类标准请求,hub相关的标准我们暂时不研究,大家知道这一点就好。

    4.主机检测所插入的设备是全速还是低速

     hub通过检测USB总线空闲时的差分线的高低电压来判断所连接设备的速度类型,当host发来Get_Port_Status请求时,hub就可以将此设备的速度类型信息回复给host。USB 2.0规范要求速度检测要先于复位(Reset)操作。

    根据是D+还是D-被拉高来判断到底是什么设备(全速/低速)插入端口。如下图。

    5.主机通过hub复位设备

    主机一旦得知新设备已连上以后,它至少等待100ms以使得插入操作的完成以及设备电源稳定工作。然后主机控制器就向hub发出一个 Set_Port_Feature请求让hub复位刚才设备插上的端口。hub通过驱动数据线到复位状态(D+和D-全为低电平 ),并持续至少10ms。当然,hub不会把这样的复位信号发送给其他已有设备连接的端口,所以其他连在该hub上的设备自然看不到复位信号,不会受影响。hub集线器具体电路实现原理大家可以进行搜索查看。

    6. 主机进一步检测全速设备是否是支持高速模式

     因为根据USB 2.0协议,高速(High Speed)设备在初始时是默认全速(Full Speed )状态运行,所以对于一个支持USB 2.0的高速hub,当它发现它的端口连接的是一个全速设备时,会进行高速检测,看看目前这个设备是否还支持高速传输,如果是,那就切到高速信号模式,否则就一直在全速状态下工作。同样的,从设备的角度来看,如果是一个高速设备,在刚连接到hub时或上电只能用全速模式运行。随后hub会进行高速检测,之后这个设备才会切换到高速模式下工作。假如所连接的hub不支持USB 2.0,即不是高速hub,不能进行高速检测,设备将一直以全速工作。

    7.通过Hub建立主机和设备之间的信息通道

    主机不停地向hub发送Get_Port_Status请求,以查询设备是否复位成功。Hub返回的报告信息中有专门的一位用来标志设备的复位状态。当hub撤销了复位信号,设备就处于默认/空闲状态(Default state),准备接收主机发来的请求。设备和主机之间的通信通过控制传输管道,默认管道为地址0、端点0。此时,设备能从总线上得到的最大电流是100mA。此后主机就可以通过默认控制管道和设备进行控制传输。


    8.主机获取默认控制管道的最大数据包长度

    默认管道其实连接到设备一端其实就是端点0。主机此时发送的请求是默认地址0,端点0,虽然所有未分配地址的设备都是通过地址0来获取主机发来的请求,但由于枚举过程不是多个设备并行处理,而是一次枚举一个设备的方式进行,所以不会发生多个设备同时响应主机发来的请求。

    主机会发送Get_Descriptor获取设备描述符,设备描述符的第8字节代表设备端点0的最大包大小,只有知道端点0 的最大包长度,才知道一次控制传输要从设备请求多少字节数据。

    9.主机请求hub再次复位设备

    Get_Descriptor获取设备描述符请求成功,系统会要求hub对设备进行再一次的复位操作(USB规范里面可没这要求),再次复位的目的是使设备进入一个确定的状态。

    10.主机给设备分配一个新地址

    主机控制器通过Set_Address请求向设备分配一个唯一的地址。在完成这次传输之后,设备进入地址状态,之后就启用新地址与主机通信。这个地址对于设备来说是终生制的,设备在,地址在;设备消失(被拔出,复位,系统重启),地址被收回。同一个设备当再次被枚举后得到的地址不一定是上次那个了。

    11.主机获取并解析设备描述符信息

    主机发送Get_Descriptor请求读取设备描述符,这次主机发送Get_Descriptor请求使用新地址,它会解析设备描述符的每一项内容。设备描述符内信息包括端点0的最大包长度、设备所支持的配置个数、设备类型、VID、 PID、字符串索引等信息。如下图所示。

    12.主机获取字符串描述符

    根据如果有字符串描述符,主机会获取语言ID描述符和字符串描述符。

    13.主机获取标准配置描述符

    主机发送Get_Descriptor_Configuration请求并解析标准配置描述符,标准配置描述符内信息包括配置描述符集合长度、接口数、设备属性、设备所需电流。如下图所示。

    14.主机获取配置描述符集合

    配置描述符集合包括标准配置描述符、接口描述符、端点描述符,如果是HID设备还会包括HID描述符,主机会根据上面得到的标准配置描述符的wTotalLength,发送了一个Get_Descriptor_Configuration请求获取到配置描述集合并解析所有描述符,从而知道设备到底是什么样的设备。

    15.主机为设备挂载驱动并选择一个配置

    主机通过解析描述符后对设备有了足够的了解,会选择一个最合适的驱动给设备,现在就将控制权交到设备驱动了。对于复合设备,通常应该是不同的接口配置给不同的驱动。

    主机发送Set_Configuration请求来正式确定选择设备的哪个配置作为工作配置(对于大多数设备来说,一般只有一个配置被定义)。至此,设备处于配置状态(Configured)。

    16.USB枚举抓包图


    1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除;

    2.未经原作者允许不得转载本文内容,否则将视为侵权;

    3.转载或者引用本文内容请注明来源及原作者;

    4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。

    下面是我的个人微信公众号,关注【一个早起的程序员】精彩系列文章每天不断。

    展开全文
  • 在鱼鹰提供的例程资料中,标准请求通过一个结构体体现: 以下是CDC枚举过程涉及到的所有标准请求和对应的描述符: 获取设备描述符: 设置地址: 这次事务从机不需要回复或接收数据,所以没有数据阶段,只有状态阶段...

    来源:公众号【鱼鹰谈单片机】

    作者:鱼鹰Osprey

    ID   :emOsprey

    虽然鱼鹰提供的资料已经把图解资料分享出来了(Osprey文件夹),但因为这个系列就是图解系列,所以还是把 CDC 枚举过程中涉及到的所有标准请求和描述符都展现一下好了。

    在鱼鹰提供的例程资料中,标准请求通过一个结构体体现:

    以下是CDC枚举过程涉及到的所有标准请求和对应的描述符:

    获取设备描述符:

    设置地址:

    这次事务从机不需要回复或接收数据,所以没有数据阶段,只有状态阶段。

    获取配置描述符:

    这个描述符最长,如果只是单纯的获取配置描述符的话,其实没有多少,但实际上,主机大部分情况下会一次性要求返回包括:配置描述符、接口描述符、端点描述符等描述符。这样主机才能根据当前的配置描述符确定接口和端点信息。

    因为接口和端点描述符依赖配置描述符的信息,所以从机需要把所有信息一次提供给主机,这样可以保证数据的完整性(否则可能在交互时该配置下的描述符和别的配置下描述符错乱,毕竟 USB 可是支持多种配置的)。

    这里面比较难理解的是Union相关描述符,简单理解就是,因为CDC有两个接口,而主机一般会把每一个接口当做一种设备功能,所以为了让主机知道这里面的两个接口其实是一个设备功能,所以使用Union 等描述符来告诉主机两个接口属于同一个功能,可以使用一个驱动程序驱动。

    字符串描述符,主机显示用:

    获取语言ID

    关于字符串,鱼鹰提供的例程并不能在【设备管理器】中正确显示,可能就是因为语言ID 返回 0x0409, 表示ASCII编码,但是实际上却是 Unicode 编码,这可能就是为什么设备可以正常使用,但字符串显示不对的原因了。

    推荐阅读:

    嵌入式系统优先级详解

    KEIL 调试经验总结

    线程CPU使用率到底该如何计算?

    许久以后,你会感谢自己写的异常处理代码

    终极串口接收方式,极致效率

    延时功能进化论(合集)

    如何写一个健壮且高效的串口接收程序?

    打了多年的单片机调试断点到底应该怎么设置?| 颠覆认知

    -THE END-


    如果对你有帮助,记得转发分享哦

    微信公众号「鱼鹰谈单片机」

    每周一更单片机知识

    长按后前往图中包含的公众号关注

    鱼鹰,一个被嵌入式耽误的畅销书作家

    个人微信「EmbeddedOsprey」

    长按后打开对方的名片关注

    展开全文
  • USB枚举过程详解.docx

    2019-07-04 17:25:56
    详细介绍USB枚举协议,硬件设计,工作状态,及USB通讯过程详解
  • USB枚举过程分析

    万次阅读 2017-03-31 20:10:57
    调试USB设备,很重要的一点就是USB枚举过程,只要枚举成功了,那么就已经成功大半了。  USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机(Host)报告。在系统
  • USB 3.0枚举

    千次阅读 2019-06-24 22:40:46
    USB3.0枚举 USB枚举主要动作如下: 检测已连接的USB设备 识别连接的USB设备 加载相关的设备驱动 ...USB枚举包含了大量硬件技术(检测是否在位)和软件技术(识别连接到主机的是什么设备)。一旦检...
  • USB枚举过程详解.pdf

    2021-11-15 15:17:30
    linux 下USB枚举过程梳理
  • usb驱动开发之USB协议枚举过程详解

    千次阅读 2017-09-08 09:30:34
    本文把usb枚举过程通过文字、程序和图形三种形式描述出来,并形成对照。 一 枚举过程之文字描述  •主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。(集线器端口的两根信号线的每一根都有15kΩ...
  • USB枚举过程详细分析

    2017-02-10 17:14:23
    USB启过程中硬件上电、控制传输获取数据
  • usb枚举过程详解

    2011-11-09 20:04:46
    usb枚举过程详解,收发抓包,图解案例,是学习usb驱动开发的好帮手
  • USB枚举过程

    千次阅读 2019-06-12 17:48:45
    USB枚举过程 1. 枚举是什么? 枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB的枚举过程,只要枚举...
  • usb枚举过程详解

    2008-12-12 22:53:05
    usb枚举过程详usb枚举过程详usb枚举过程详usb枚举过程详
  • 九、设置配置请求 经过上面的步骤之后,主机下发了...一个USB设备可以有很多个配置。bConfigurationValue就是每个配置的标识!主机请求设置配置的时候,会下发一个配置值,如果某个配置的bConfigurationValue和主机
  • USB 描述符 4.1 设备描述符 4.2 配置描述符 4.3 接口描述符 4.4 端点描述符 4.5 字符串描述符 5 USB 枚举 5.1 获取设备描述符 GET_DESCRIPTOR 5.2 设置地址SET_ADDRESS 5.3 请求设备描述 GET_DESCRIPTOR 5.4 ...
  • USB枚举过程概述

    2020-09-20 19:23:40
    来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey上篇笔记我们大概了解了一下 USB 设备插入主机后经历了什么阶段,本篇笔记和接下来的笔记将详细介绍整个流程。...
  • USB之(五)设备枚举

    千次阅读 2015-08-17 15:52:15
    调试USB设备,很重要的一点就是USB枚举过程,只要枚举成功了,那么就已经成功大半了。  USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(InterruptIN Endpoint)来向主机(Host)报告。在系统启动时...
  • 用图来描述枚举过程,感觉不错,是从其它人那里弄来的,程比较清晰,适合初学者分析这个过程
  • 1.Linux usb设备驱动框架 ...前者是设备连接到计算机上,通过主机驱动扫描usb设备,控制所连接的设备。而gadget驱动一般用于嵌入式设备,gadget驱动用于控制嵌入式设备。Linux的usb驱动两种类型图
  • Linux USB3.0驱动分析(十一)——Gadget设备枚举分析 一.URT介绍前面介绍了Linux USB Gadget的软件结构与各软件层的整合过程。经过各种注册函数,Gadget功能驱动层,USB设备层与UDC底层结合在了一起形成了一个完整...
  • STM32 USB HID 枚举

    2020-05-05 15:53:56
    一个USB设备只能有一个设备描述符 /* USB Standard Device Descriptor / const uint8_t Joystick_DeviceDescriptor[JOYSTICK_SIZ_DEVICE_DESC] = { 0x12, /bLength 1个字节/ USB_DEVICE_DESCR...
  • 是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。目前的主流操作系统都已提供UVC设备驱动,如:windows xp sp2、linux 2.4.6、macos10.5,这些系统及之后的...
  • 3.USB详解枚举

    2020-03-16 12:10:59
      枚举就是主机获取从机的信息(各种描述符)用来加载不同的驱动,告诉主机要怎么控制、通信,主机检测到从机上线之后会进行枚举的流程,枚举USB中最重要也最复杂,前面说到USB传输有四种模式,控制传输最繁琐但...
  • 我会写的非常详细且简洁,后面在学习USB枚举的时候会通过抓包和波形来学习每一个描述符在总线上的作用,并且会介绍每一个描述符是在什么时候以哪种方式在总线上进行传输的,今天主要是学习USB设备描述符的组成。...
  • USB具体通讯过程(含枚举过程)

    万次阅读 多人点赞 2018-06-25 15:21:36
    前言 现在刚开始接触USB的开发,零零散散学习了一些USB基础知识,但是却得不到连贯。在这个学习过程中首先困惑...一、USB系统的结构 USB系统是由三个逻辑层组成:功能层、USB设备层和USB总线接口层。并且每一层都...
  • USB枚举过程图解详解

    2010-02-26 13:54:11
    比看书文字说明更清晰明了,USB枚举过程图解!!!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,078
精华内容 431
关键字:

usb设备枚举详解