Linux之 USB驱动框架-基础知识整理(1)

一、usb 总线驱动框架图

二、usb 总线发展历程

  1. USB 1.0:最初的USB规范,于1996年发布,速度为1.5 Mbps(低速)和12 Mbps(全速)。

  2. USB 1.1:1998年发布,对USB 1.0规范进行了一些修订和改进。

  3. USB 2.0:2000年发布,速度为480 Mbps(高速),对USB 1.x的速度进行了显著提升。

  4. USB 3.0 / USB 3.1 Gen 1:2008年发布,速度为5 Gbps(超速)。在2013年,USB 3.0被重命名为USB 3.1 Gen 1。

  5. USB 3.1 Gen 2:2013年发布,速度为10 Gbps(超速)。

  6. USB 3.2 Gen 1x1 / USB 3.2 Gen 1 / USB 3.2 Gen 1x2:2017年发布,速度为5 Gbps(超速)。

  7. USB 3.2 Gen 2x1 / USB 3.2 Gen 2:2017年发布,速度为10 Gbps(超速)。

  8. USB 3.2 Gen 2x2:2017年发布,速度为20 Gbps(超速)。

  9. 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驱动源码

相关推荐
Dovis(誓平步青云)几秒前
《剖析 Linux 文件系统:架构、原理与实战操作指南》
linux·运维·服务器
千百元几秒前
centos查线程数
linux·运维·centos
---学无止境---2 分钟前
Linux中基数树标签相关操作函数的实现
linux
San3026 分钟前
使用 n8n 构建自动化科技新闻速览工作流:从 RSS 到 AI 摘要生成与文件存储
运维·人工智能·机器学习
or77iu_N35 分钟前
Linux 解压安装(安装tomcat)
linux·运维·tomcat
赋创小助手1 小时前
实测对比 32GB RTX 5090 与 48GB RTX 4090,多场景高并发测试,全面解析 AI 服务器整机性能与显存差异。
运维·服务器·人工智能·科技·深度学习·神经网络·自然语言处理
晨曦之旅1 小时前
白嫖服务器
运维·服务器
TG_yunshuguoji1 小时前
阿里云渠道商:如何建立阿里云的权限模型?
运维·服务器·阿里云·云计算
海棠蚀omo1 小时前
Linux操作系统-父进程的等待:一个关于回收与终结的故事
linux·操作系统
乌萨奇也要立志学C++1 小时前
【Linux】Ext系列文件系统 从磁盘结构到文件存储的原理剖析
android·linux·缓存·1024程序员节