USB百科
+ -

USB技术学习向导

2023-09-08 441 23

USB技术博大精深,学习起来也比较麻烦。但如果我们理清知识层次结构,也能抓住重点,快速解决问题。
USB知识体系复杂,最直接的感受就是我们零散的知识点,但这些知识点又无法连接起来,熟悉又不熟悉,所以感觉就是似懂非懂。
本人结合自己的USB学习经验,总结如下:
USB按实际的知识层次,可分为:

  • 硬件层面
  • 数据链路层面
  • 令牌、事务层面
  • 传输层面
  • 应用层面

有点类似IOS的七层模型,从硬件到软件,从底层到上层。

USB硬件层面

USB硬件主要是USB芯片的选型,低速、全速高速、超高速的硬件电路原理。这些一般都是公版电路,照抄即可。
对于超高速可能需要考滤高频的干扰之类。
但于对非从事硬件的人员来说,至少从硬件电路上区分低速,全速、高速和超高速电路,上拉下拉电阻的位置和电阻值。
对于从事硬件的人来说,你得了解其D+/D-内部电路,就如同了解运算放大器的内部电路一样熟悉。了解在从全速到高速识别过程中800mv到400mv的原理。
无关乎数字电路模拟电路,你反正得了解各个器件的内部模块图,相关的接口参数,才来设计出比较稳定的外部电路。
这方面你得有非常扎实的模电基础,除了课本上的知识外,看看《晶体管电路设计》这本书是不错的参考书籍。

数据链路层

这方面其实主要是逻辑分析仪、FPGA工程师关注的比较多。
我们需要画时序图,了解编码规则及为什么要进行编码。
这方面可以通过一些逻辑分析仪抓包,当然一个好的示波器也可能是必备的,信号质量上得了解眼图之类。
如果很你厉害,也可以徒手分析时序图,当然这方面可以借助工具来学习。比如力科的工具就有令牌的逻辑图。这方面多看多见,也是很不错的。另外也得了解令牌和事务的概念,不然你怎么组织数据的收发。
当然这是建立在你在学习USB IP核的前提下来搞的,但是大部的芯片是有IP核的,也许我们只处理相关的中断和FIFO数据搬迁即可。但是你也可通过处理器的IO或者FPGA的IO的模拟相关的时序逻辑,来增加自己对这方面的理解。

令牌、事务

这里时查USB问题用的最多的地方。话不多说,直接整USB总分析仪即可。
常见的USB总分析仪有南京沁恒的,XTOOL出的USB Packet Viewr和国外的力科的。
总分析仪有最高支持的协议,比如最高支持到2.0高速的,有的却是可以支持到3.0,不同的规格价格差距很大。
USB为了实现USB的数据四种传输方式,有大量的令牌及其给合的事务。熟悉和了解他们之间的关系,很重要。
SB总分析仪

传输层

这方面涉及的主要是四种传输方式、USB标准请求、基于USB基础的类请求即特定类请求
这方面可以通过BUSHOUND等系统层的抓包工具来学习,这里会了解各种USB描述符和请求。
我们也可以使用usbtreeviewer用来分析USB设备的描述符,当然本人也在这方面搞了很多的特定工具,比如HIDReportParser,USB标准请求及描述符在线分析、UVCStreamComandParser等。

USB应用层

这里包括2方面:
第一是USB的各种类规范,如UVC,UAC,CDC,HID之类的,重点学习其特有的描述符和相关的特定类请求
第二系统层的接口和驱动开发。系统自速的驱动如HID的,winusb,开源libusb等。还有就是我们自己开发的USB调试辅助工具。
USB辅助工具

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB 设置特性请求SetFeature
ID请求码说明3SET_FEATURE用来启用或激活命令接收者的某些特性SetFeature请求用于设置或使能USB设备、接口或端点的特性值,和CLEAR_FEATURE请求相对应。SetFeature请求同样没有数据阶段。bmRequestType(1)b......
USB音箱 工作抓包分析
USB音响打开Length Phase Data -------- ----- ------------------------------ -------------- CTL ......
USB传输过程中的延迟
USB传输过程中的延迟可分为包间延迟、USB线缆上的延迟和USB集线器延迟。在数据传输时,USB主机和USB设备能够计算整个数据传输时间,这个数据传输的时间由发送方发数据信息包结束时开始计算,直到接收到接收方的应答信号为止。USB包间延迟USB数据传输的包间延迟只存在于一个USB数据流管理中的各......
USB3.2超高速兼容USB2.0数据收发的双总线架构
超高速USB体系和以前的USB版本的功能一致,都是通过USB线缆将USB主机USB外设相连,进行数据交互的。所与连接到该条USB总线上的所有设备在主机控制器协调下,共享带宽。USB总线允许外部设备被接入(attached),配置,使用或移除。USB3.2是双总线架构,其中一条总线用于向后兼容USB2......
USB超高速3.0协议与USB2.0协议的差异
超高速在框架层级是向后兼容 USB 2.0 的。然而, USB 2.0 和超高速协议还是有一些根本性的差异:USB 2.0 使用三部分事务交易(令牌,数据和握手),而超高速对这相同的三部分的使用是不相同的。对于输(OUTs),令牌被列入数据包;而对于输入(INs),令牌则被握手所取代。USB 2.0......
linux下UsbMon-WireShark之USB协议抓取分析
usbmon配置使用usbmon抓包分的,是需要 内核开启CONFIG_USB_MON=m, 重新编译内核, 编译ko :make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- CONFIG_USB_MON=m M=./drivers/usb/ ......
USB 2.0 协议中J、K、SE0状态的定义
USB 2.0协议中经常会看到以下术语:Chirp K、KJ序列、SE0。这里的状态是根据低速、全速/高速下设备D+和D-上不同的电平信号来决定的。1、J态、K态、SE0,SE1信号转换状态状态Low speed (D+ pull-up)Low speed (D− pull-up)......
USB 设置描述符SetDescriptor
ID请求码说明7SET_DESCRIPTOR修改设备中有关的描述符,或者增加新的描述符SetDescriptoret用于设置USB的描述符,在SetDescriptor请求的数据阶段,主机将向USB设备发送指定的描述符类型 。bmRequestType(1)bRequest(1)wValue(2)w......
USB3.0硬件编码格式-8B/10B编码
1.编码技术基础理论 在高速的串行数据传输中,传送的数据被编码成自同步的数据流,就是将数据和时钟组合成单一的信号进行传送,使得接收方能容易准确地将数据和时钟分离,而且要达到令人满意的误码率,其关键技术在于串行传输中数据的编码方法。 目前, 高速接口正在被广泛应用于包括 SATA、 SAS、 高速......
USB超高速 超高速端点伴随描述符
在接口中描述的每个超高速端点都紧跟着一个超高速端点伴侣描述符( EndpointCompanion descriptor)。这个描述符包含只给超高速端点定义的附加端点特性。这个描述符总是 作 为 配 置 描 述 符 信 息 的 一 部 分 在GetDescriptor(Configuration) ......
为什么我的USB设备如U盘从一个端口换到另一个端口会重新安装驱动?
在 Windows 2000和更高版本的操作系统中,当 USB 设备从一个端口移到另一个端口时,将创建一个新的物理设备对象 (PDO)。 如果硬件报告了唯一的 USB 序列号,则不会创建新的 PDO。若要重复使用同一 PDO 并确保设备不会改变,无论设备是否已重新插入相同的端口或新端口,硬件供应商必......
USB-UAC麦克风 音频控制接口
音频控制接口描述符描述了设备的结构(拓扑结构),并通过特定类请求对音频的控制。UAC麦克风 音频控制接口描述符偏移地址字段长度值描述0bLength10x09接口描术符的长度1bDescriptorType10x04描述符的类型接口描述符2bInterfaceNumber10x00接口ID号3bA......
USB与其它总线相比的优点是什么
USB 的设备可以接在 PC 上的任意的 USB 接口上. 而使用 Hub 还可以扩展使更多的USB设备连接到系统中 USB的Hub 有一个上行的端口(到host) 有多个的下行端口(连接其它的设备). 从而可以使整个的系统可以扩展的连接 127 个外设. 其中 Hub 也算外设.对于US 系统来说......
USB音箱 UAC设备描述符分析
这里看到,USB规范采用的是USB1.1版本,不过字符串中又显示的是”USB2.0 Device”,所以这里就有点迷~关于设备描述符各字段的详细解释,详见USB规范中设备描述符一节。从bDeviceClass,bDeviceSubClass和bDeviceSubClass都被置为0来看,这是一个典......
站内大事
2018年9月,开始筹建,初始为个人博客。2019年11月,网站进行版本更新,并修改站名为字节流,使用新的域名www.bytekits.com, 交将原来个人博客的技术文章重新编辑并入。2019年11月,增加【C/C++技巧】,此为本人原来在公司内部的技术培训内容。2019年11月,增加【NTFS文......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!