Linux-USB驱动笔记(二)

26 篇文章 31 订阅

1、前言

这些笔记需要连着看,不然没有上下文感觉很难受,嘿嘿

上一篇文章:
Linux-USB驱动笔记(一)

2、USB 拓扑结构

USB 是主从结构的,也就是分为主机和从机两部分,一般主机叫做 Host,从机叫做 Device。主机就是提供 USB A 插座来连接外部的设备,比如电脑作为主机,对外提供 USB A 插座,我们可以通过 USB 线来连接一些 USB 设备,比如声卡、手机等。因此电脑带的 USB A 插座数量就决定了你能外接多少个 USB 设备,如果不够用的话我们可以购买 USB 集线器来扩展电脑的USB 插口,USB 集线器也叫做 USB HUB,USB HUB 如下图所示:
在这里插入图片描述

上图是一个一拖四的 USB HUB,也就是将一个 USB 接口扩展为 4 个。主机一般会带几个原生的 USB 主控制器

虽然我们可以对原生的 USB 口数量进行扩展,但是我们不能对原生 USB 口的带宽进行扩展,比如两个原生 USB 口都是 USB2.0 的,带宽最大为 480Mbps,因此接到下面的所有 USB 设备总带宽最大为 480Mbps。

USB 只能主机与设备之间进行数据通信,USB 主机与主机、设备与设备之间是不能通信的。因此两个正常通信的 USB 接口之间必定有一个主机,一个设备。为此使用了不同的插头和插座来区分主机与设备,比如主机提供 USB A 插座,从机提供 Mini USB、Micro USB 等插座。在一个 USB 系统中,仅有一个 USB 主机,但是可以有多个 USB 设备,包括 USB 功能设备和 USBHUB,最多支持 127 个设备(USB协议中对集线器的层数是有限制的,USB1.1规定最多为4层,USB2.0规定最多为6层。)。一个 USB 主控制器支持 128 个地址,地址 0 是默认地址,只有在设备枚举的时候才会使用,地址 0 不会分配给任何一个设备。所以一个 USB 主控制器最多可以分配 127 个地址。整个 USB 的拓扑结构就是一个分层的金字塔形,如图 67.1.3.2 所示(参考自USB2.0 协议中文版.pdf):

在这里插入图片描述
从上图中可以看出从 Root Hub 开始,一共有 7 层,金字塔顶部是 Root Hub,这个是USB 控制器内部的。图中的 Hub 就是连接的 USB 集线器,Func 就是具体的 USB 设备。

USB 主机和从机之间的通信通过管道(Pipe)来完成,管道是一个逻辑概念,任何一个 USB设备一旦上电就会存在一个管道,也就是默认管道,USB 主机通过管道来获取从机的描述符、配置等信息。在主机端管道其实就是一组缓冲区,用来存放主机数据,在设备端管道对应一个特定的端点

3、USB的传输方式

  • 批量传输:批量传输用在那种需要大量传输数据,但对实时性要求不高的情况下。如U盘,拷贝数据的时候需要大量数据传输,但对时间上并没有特别严格的要求。

  • 中断传输:中断传输的数据量很小,一般用于通知Host某个事件的来临,例如USB鼠标,键盘等。这里的中断并不是指硬件上那种中断机制,而是 USB 主机按照指定的时间不断的查询设备是否有数据传输。

  • 同步传输:同步传输要保证信息传输的同步性,比如摄像头,需要实时传输数据。但同步传输也有个特点,虽然要求实时性,但不要求百分之百的包正确。

  • 控制传输:控制传输是负责向USB设置一些控制信息。一个 USB 控制器下面挂接很多的设备,要怎么传输数据,还有寻址等,都是通过控制传输建立起来的。

4、USB设备的逻辑组织

在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。

USB设备的逻辑组织

  • 设备:就是USB设备,一个设备包含一个或多个配置

  • 配置:每个USB设备提供不同级别的配置信息,不同配置使设备表现出不同功能。一个配置由多个接口组成

  • 接口:代表一个基本的功能,它是USB设备驱动程序控制的对象。一个配置中的所有接口可以同时有效。一个接口由多个端点组成

  • 端口:USB通信的基本形式,每一个USB设备接口在主机看来就是一个端点的集合。主机只能通过端点与设备进行通信,以使用设备的功能。在USB系统中每一个端点都有唯一的地址。端点0通常为控制端点,用于设备初始化参数等。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值