对应具体的设备上,只要是支持USB协议的设备,都可以连接计算机,如USB键盘、USB鼠标、USB摄像头、USB音箱等。...2.USB协议版本 从USB协议诞生至今,出现了多个USB协议版本,如USB1.0、USB1.1、USB2.0、USB3.0、USB3.1、USB3.2。...最新的是USB4.0协议,可直连CPU的PCIe总线,最大速度可达40Gbps,使用Type-C接口,兼容DP视频协议、PD快充协议等,最高支持100W供电。...下图是USB3.2协议使用的标志,此标志是USB-IF网站上最新的。...USB3.0及以后的USB协议,主机也可以和集线器(Hub)通信。
注意:USB协议规定,不允许主机使用NAK来拒绝接收数据包。主机收到NAK,知道设备暂时没有数据返回,主机会在稍后时间重新该批量输入事务。...USB主机驱动将通过控制传输与USB设备的控制端点通信,完成USB设备的枚举和配置 。...USB事物 USB包 包的组成: 包的内容: 1、PID: 这里只用(PID0~4),PID4~7是PID0~4的取反,用来校验PID PID1~0:01 令牌包、11 数据包、10 握手包、...设备枚举及描述符介绍 当一个USB设备插入主机后,会有以下活动: 在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。...在usb系统中,所有的通信都是由主机发出相应的令牌所引起的。
二、概述: UVC,全称为:USB video(device) class,是微软与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。...USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容。...正是由于这些Class协议,大大促进了USB设备的普及,比如说各个厂商生产的U盘都能通过操作系统自带的驱动程序来使用。...所以说UVC仅仅只是USB规范协议中设备类规范的其中一种,是用作USB接口的视频设备的一个统一的数据交换规范。...UVC,Linux系统自2.4以后的内核都支持了大量的设备驱动,其中支持UVC设备。
2.1 Beagle USB 12 Analyzer 在USB Host和Device之间的DP/DM上连接一个Fairchild USB1T11A,Fairchild USB1T11A连接到隔离器件...Figure 2-1 Beagle USB 12 Analyzer 2.2 Beagle USB 480 Analyzer USB 2.0的协议分析仪有2个PHY,支持LS/FS的Fairchild...USB1T11A,支持HS的USB3300(passive sniffing mode)。...https://desowin.org/usbpcap/ 5 Linux usbmon抓包 5.1 sniff原理 binary格式路径:/dev/usbmonX text格式路径:/sys...2)usb.src == host and ublox 5.4 USB协议URB解析Wireshark插件 usb_table = DissectorTable.get(“usb.bulk”)
https://blog.csdn.net/zzw19951261/article/details/90751721 SPICE 协议...USB 重定向 用SPICE协议来进行USB透传的介绍,在SPICE官网上有:Spice 官网 kvm xml配置 remote viewer 使用 usb重定向 virt-viewer 版本为6.0/7.0...时 在主机上(打开remote viewer 的机器上)安装usbdk软件可解决识别不了U盘的问题 virt-viewer 8.0 自带识别USB 但是目前有问题,待解决
总结:USB的最小单元是“域”,由“域”构成了“包”,在由“包”构成了“事务”,最后由“事务”构成了“传输”,在应用层面,我们看到的只是传输,所以USB协议栈就需要完成传输以下的所有事情。...这对标准的USB协议栈提出了最基本的要求。...//USB分配的设备协议代码,同上 BYTE bMaxPacketSize0; //端点0的最大包的大小 WORD idVendor; //厂商编号 WORD...不过,USB协议还提供了一些用户可选的协议,设备如果不应答,也不会出错,但是会影响到系统的功能。 14、主机为复合设备接口分配驱动程序。...这种传输方式通常用于配置/命令/状态等情形,其中的设置操作setup和状态操作status过程的数据包具有USB协议定义的数据结构,因此,控制传输只能通过消息管道进行。
一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。...2)、“消息”指具有某种USB定义格式的数据流。消息通道与端点的关系同流通道与端点的关系是不同的。
,单片机来实现立马感觉亲切了许多,决定先从单片机入手学,后面再看linux那些事儿之我是usb,深入学习linux内核下usb,以下先介绍usb协议,内容整理来自usb spec、网络和圈圈书中,文中也大量引用...STM32官方的USB2.0协议文档,欢迎批评指正。...linux kernel ch9.h中对描述符的结构体定义,对usb协议有了深入的理解。...USB协议版本有USB1.0、USB1.1、USB2.0、USB3.1等,USB2.0目前比较常用,以下以2.0为主介绍。...USB标准请求 3.1 USB标准请求的数据结构 3.2 USB 设备枚举及描述符介绍 当一个USB设备插入主机后,会有以下活动: include/uapi/linux/usb/ch9
最后作为实际案例,从 USB 协议实现的角度分析了checkm8漏洞的成因。...下面以 Linux 内核的实现为例来简要介绍各个描述符,主要参考头文件 include/uapi/linux/usb/ch9.h。...传输 不像 RS-232 和其他类似的串口协议,USB 实际上由多层协议构造而成,不过大部分底层的协议都在 Controller 端上的硬件或者固件进行处理了,最终开发者所要关心的只有上层协议。...还是以 Linux 内核为例,具体来说,我们想了解如何通过添加内核模块的方式实现一个新的自定义 USB 设备。...关于 Linux USB 子系统的详细设计结构,可以参考源码中的文档: Linux USB API,以及其他一些资料,如下所示: https://bootlin.com/doc/legacy/linux-usb
协议层 要理解协议层、理解数据如何传输,带着这几个问题去学习: 如何寻址设备? 如何表示数据方向(读、还是写) 如何确认结果?...2.3 包格式 USB 总线上传输的数据以包为单位。USB 包里含有哪些内容("域")?...有哪些 USB 包?...如下表(来自《圈圈教你玩USB》)所示: 在 USB 包中,PID 域使用 8 位来表示,格式如下: 前 4 位表示 PID,后 4 位是对应位的取反。...但是 USB 协议中并没有中断功能,它使用"周期性的读、写"来实现及时性。
2.6 iPhone USB PD 使用的芯片是CYPD2104和BQ25890的组合,iPhone X整体PD快充的电源管理策略如下: 1)关机状态下不进行PD沟通,APPLE 2.4A协议生效。...非APPLE 2.4A协议开机会慢一点; 2)开机后进行PD协商,依然选取PDO2,前面50%会以较高功率充电(最大不超过15W且视温度及电量自动调控功率); 3)充至50%-55%左右会降至9-11W...Figure 3-2 Ballot Box Rules Figure 3-3 USB PD Ballot Box 4 USB PD芯片介绍 4.1 STM32软件实施USB PD协议 USB...Common Class Generic Parent,Linux内核类似的驱动就是usb_generic_driver DWC2:Design Ware Controller 2,Apple的嵌入式设备...,该公司首先发明了将TT集成到EHCI RootHub中的方法,这样对于嵌入式系统来说,就省去了OHCI/UHCI的硬件,同时降低了成本,作为对该公司的纪念,Linux内核定义了宏ehci_is_TDI
USB3.0 与USB2.0的特性比较 ? 3.2 超速结构 超速总线是一个分层的通讯结构,如下图所示: ? 协议层: 协议层在主机和设备间定义了end-to-end通讯规则。...超速协议在主机和设备端点(endpoint)之间提供应用数据信息交换。这个通讯关系叫做管道(pipe)。 它是主机导向的协议,意味着主机决定什么时候在主机和设备间进行应用数据传输。...设备可以通过一个特定端点向主机发起异步请求服务,所以它不是一个轮询协议(USB2.0为轮询协议)。 数据可以连续突发传输,提高总线效率。 对某些传输类型(块传输),协议提供流控支持。...集线器参与到一个端到端的协议中,所承当的工作: ·路由选择输出的包到下游端口。...流式提供在协议级支持在标准块传输管道中多路传输多个独立的逻辑数据流。
USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 1....包(Packet) 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。...高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为 EOF。...注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,...输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。
USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 2....包(Packet) 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。...高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为 EOF。...注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,...输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。
Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...注册 usb_device usb_device 被"drivers\usb\core\generic.c" 驱动认领后,会选择、设置某个配置 这个配置下面的接口,都会分配、设置、注册一个 usb_interface...左边的 usb_driver 和右边的 usb_interface 如果匹配,则调用 usb_driver.probe 2....接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。
今天说一说usb协议开发_基于事件驱动的架构,希望能够帮助大家进步!!! 1....USB协议 1.1 USB主机系统 在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器。USB主机控制器包含硬件、软件和固件一部分。...B设备开始总线复位并具有总线控制权,主机交换协议完成。 2.2 SRP(会话请求)协议 对于主机,要求能响应会话请求;对于设备,仅要求能够发起SRP协议。...USB Core这个模块代表的不是某一个设备,而是所有USB设备赖以生存的模块。在Linux中,像这样一个类别的设备驱动被归结为一个子系统。...其中,Linux内核只支持同步传输外的三种传输事件,ISO事务需要手工进行初始化工作。控制传输事务、批量传输事务、中断传输事务API如上所示。
gadget 功能前关闭 adb 功能时却报异常的解决办法 4 附录 4.1 Linux-4.x/Linux-5.4 Gadget 配置示例 4.1.1 小机做 mass storage 4.1.2...1.3 适用范围 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 drivers/usb/* Linux-5.4 drivers/usb/* 2 模块介绍 2.1 模块功能介绍...USB 总线采用树形结构,在一条总线上只能有唯一的主机设备。Linux 内核从主机和设备两个角度观察 USB 总线结构。...Linux 有原生 gadget 框架,通用的配置流程可参考下文。...图 2-11: linux-4.x usb gadget 配置选择 2.6.2 linux-4.x/linux-5.4 USB Gadget 配置流程 Linux-4.x/Linux-5.4 使用 configfs
如果设备支持设备类相关的协议,此码标志了设备类的值。如果此域的值为零,则此设备不支持设备类相关的协议,然而,可能它的接口支持设备类相关的协议。如果此域的值为FFH,此设备使用厂商定义的协议。.../usb.h> 4.2 USB设备注册框架示例 #include #include #include //定义...鼠标驱动(中断传输方式) 5.1 USB驱动注册框架代码 #include #include #include ...#include #include #include #include .../init.h> #include #include #include #include <linux/slab.h
通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下..."level": 1, "manufacturer": "QEMU", "port": 0, "prodid": "0001", "product": "QEMU USB...: 产品 serial: USB 硬件设备序列号 ,例如 0000:00:01.2 定位方法# 定位某一个 USB 设备的方法有两种: busnum + devnum idVendor + idProduct...设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice By...USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
[ 0.513302] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 0.513303] usb usb1...Controller [ 0.513304] usb usb1: Manufacturer: Linux 3.10.0-327.el7.x86_64 xhci-hcd [ 0.513305...] usb usb1: SerialNumber: 0000:00:14.0 [ 0.518700] usb usb2: New USB device found, idVendor=1d6b,...0.518702] usb usb2: Product: xHCI Host Controller [ 0.518702] usb usb2: Manufacturer: Linux 3.10.0...] usb 1-4: New USB device found, idVendor=413c, idProduct=301a [ 1.040348] usb 1-4: New USB device
领取专属 10元无门槛券
手把手带您无忧上云