一、usb 总线驱动框架图

二、usb 总线发展历程
-
USB 1.0:最初的USB规范,于1996年发布,速度为1.5 Mbps(低速)和12 Mbps(全速)。
-
USB 1.1:1998年发布,对USB 1.0规范进行了一些修订和改进。
-
USB 2.0:2000年发布,速度为480 Mbps(高速),对USB 1.x的速度进行了显著提升。
-
USB 3.0 / USB 3.1 Gen 1:2008年发布,速度为5 Gbps(超速)。在2013年,USB 3.0被重命名为USB 3.1 Gen 1。
-
USB 3.1 Gen 2:2013年发布,速度为10 Gbps(超速)。
-
USB 3.2 Gen 1x1 / USB 3.2 Gen 1 / USB 3.2 Gen 1x2:2017年发布,速度为5 Gbps(超速)。
-
USB 3.2 Gen 2x1 / USB 3.2 Gen 2:2017年发布,速度为10 Gbps(超速)。
-
USB 3.2 Gen 2x2:2017年发布,速度为20 Gbps(超速)。
-
USB4:2020年发布,速度为40 Gbps。结合了USB 3.2和Thunderbolt 3标准,提供更高的数据传输速度和更多功能。
三、usb 热插拔

四、usb 设备拓扑图

五、 usb 设备和usb 驱动如何匹配
USB设备与USB驱动怎么匹配的呢?实际上USB设备中有一个模块叫固件,是固件信息和USB驱动进行的匹配。固件是固化在集成电路内部的程序代码,USB固件中包含了USB设备的出厂信息,标识该设备的厂商ID、产品ID、主版本号和次版本号等。另外固件中还包含一组程序,这组程序主要完成USB协议的处理和设备的读写操作。USB设备固件和USB驱动之间通信的规范是通过USB协议来完成的。
六、usb四种传输方式
端点的传输方式包括控制传输、中断传输、批量传输、等时传输。
1、(control)控制传输主要用于向设备发送配置信息、获取设备信息、发送命令道设备,或者获取设备的状态报告。控制传输一般发送的数据量较小,当USB设备插入时,USB核心使用端点0对设备进行配置,另外,端口0与其他端点不一样,端点0可以双向传输。
2、(interrupt)中断传输就是中断端点以一个固定的速度来传输较少的数据, USB键盘和鼠标就是使用这个传输方式。这里说的中断和硬件上下文中的中断不一样,它不是设备主动发送一个中断请求,而是主机控制器在保证不大于某个时间间隔内安排一次传输。中断传输对时间要求比较严格,所以可以用中断传输来不断地检测某个设备,当条件满足后再使用批量传输传输大量的数据。
3、(bulk)批量传输通常用在数据量大、对数据实时性要求不高的场合,例如 USB打印机、扫描仪、大容量存储设备、U盘等。
4、(isochronous)等时传输同样可以传输大批量数据,但是对数据是否到达没有保证,它对实时性的要求很高,例如 音频、视频等设备。
7、usb 驱动分类
内核代码分析包括USB驱动框架、鼠标驱动、键盘驱动、U盘驱动:
USB驱动编写的主要框架/drivers/usb/usb-skeleton.c
USB鼠标驱动 /drivers/hid/usbhid/usbmouse.c
USB键盘驱动动 /drivers/hid/usbhid/usbkbd.c
USB Mass Storage是一类USB存储设备, U盘便是其中之一,主要分析的驱动文件是/drivers/usb/storage/usb.c
/drivers/usb/host/ :usb host control 主机控制器驱动(嵌入式otg:dwc_otg)
/drivers/usb/serial :usb 串行设备驱动(例如 usb 3G 卡、蓝牙)。
之后会对每个USB驱动进行分析源码,继续加油
8、USB OTG
现在市面上有些设备(比如MP4)既能插上电脑当U盘使用,也能接上U盘读取U盘。这就是OTG(On-The-Go),既可以做主设备也可以做从设备,传说中的雌雄同体。OTG不仅支持控制器的主从切换,在一定程度上,也支持相同设备之间的数据交换。
9、上面是usb 总线的基础知识,第二篇开始分析USB驱动源码