USB基础知识介绍(来源于国嵌)

  1. 基本概念
    1. 简介

    USB(Universal Serial Bus),通用串行总线,是一种外部总线标准,用于规范电脑与外部设备的连接和通讯。2发展史

          2.发展史

    1996年出现USB1.0,速度只有1.5Mb/s,b表示比特,称为lowspeed。

    1998年升级为USB1.1,速度提升到12Mb/s,称为fullspeed。

    之后出现了USB2.0,速度提升到480Mb/s,折算为60MB/s,它向下兼容USB1.1,称为highspeed。

    后来又出现了USB3.0,速度十倍于USB2.0,称为superspeed。

          3.优点

    可以热插拔

    携带方便标准统一

    可以连接多个设备:如USB在个人电脑上往往具有多个接口,可以同时连接几个设备。每个接口又可以通过USB HUB扩展出多个接口。理论上每个接口最多可以支持127个设备。

       4.接口类型

    A型:就是最普遍的,像电脑上那种就属于A型,又称为USB HOST分为公口和母口

    B型:接近方形的那种,又称为USB DEVOCE,分为公口和母口

    Mini型:像手机充电接口那种,也分为公口和母口

        5.接口

    USB接口有4跟线:两根电源线,两根地线。USB接口的输出电压和电流是:+5v 500Ma

  2. USB系统构架

    1、usb系统拓扑结构

USB基础知识介绍(来源于国嵌)_第1张图片

我们根据上图来阐述usb系统的拓扑结构

对于每个usb系统来说,都有一个称为host控制器的设备,该host控制器和一个根hub作为一个整体。这个根hub可以连接设备或者子hub,每个子hub又可以连接设备或者子hub。一条usb总线上最多可以接127个设备。

  1. USB主控制器

    USB主控制器负责处理主机与设备之间的电气和协议层的互联。常见的USB主控制器规格有:

    OHCI:主要是非PC系统上的USB芯片,比如用于arm

    UHCI:大多是intel和via主板上的usb控制器芯片。遵循usb1.1规格。

    ECHI:是由intel等几个厂商研发,兼容OHCI、UHCI,遵循usb2.0规范。

  2. USB HUB

    每个USB Host控制器都会自带一个USB Hub,被称为根(root)Hub。这个根Hub可以接子(sub)Hub,每个Hub上挂载USB设备。通过外接USB Hub,可以插更多的USB设备。当USB设备插入到USB Hub或从上面拔出时,都会发出电信号通知系统。

  3. USB设备

    USB设备就是插在USB总线上工作的设备,广义上讲USB Hub也算是USB设备。

2、USB设备逻辑结构

USB基础知识介绍(来源于国嵌)_第2张图片

在USB设备的逻辑组织中,包括设备、配置、接口和端点4层次。设备通常有一个或多个配置,配置通常有一个或多个接口,接口有零或多个端点。

每个usb设备都可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从中选定一个),配置由多个接口组成。在usb协议中,接口由多个端点组成,代表一个基本的功能,是usb设备驱动程序控制的对象,一个功能复杂的usb设备可以具有多个接口,而接口是端点的汇集。

例如:一个usb播放器带有音频、视频功能,还有旋钮和按键

配置1:音频(接口)+旋钮(接口)

配置2:音频(接口)+视频(接口)+按钮(接口)

配置3:视频接口+旋钮(接口)

音频接口、视频接口、按钮接口、旋钮接口均需要一个驱动程序。

Sub设备中 唯一可寻址部分是设备端点。它是位于usb设备或主机上的一个数据缓冲区,用来存放和发送usb的各种数据。主机和设备的通信最终作用于设备上的各个端点,它是主机与设备通信的一个逻辑终端。

每个usb设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备是给定的。每个端点都是一个简单的连接点,或者支持数据流进设备,或者支持其流出设备,两者不可得兼。

基于pnp机制,设备被枚举时,它必须向主机报告各个端点的特性,包括端点号,通信方向,端点支持的最大包大小,宽带要求等(其中端点支持的最大包大小叫做数据有效负载)。每个设备必须有端点0,它用于设备枚举和对设备进行一些基本的控制功能。除端点0外,其余的端点在设备配置前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被激活。

我们打个比喻,usb总线类似于高速公路,收发的数据类似于汽车,usb端点类似于高速公路收费口的入口或者出口。

  3USB设备描述符

在每一个usb设备的内部,集成了usb配置寄存器,它通过固定格式的数据记录usb设备的信息,通过这些数据usb主机就可以获取usb设备的类型、生产商等信息。这些固定格式的数据,我们称之为usb描述符。标准的usb设备有5中usb描述符:设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符。一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口描述符使用了几个端点,就有几个端点描述符。

4.   USB数据传输

1、数据传输方式:针对设备对系统资源需求的不同,在USB规范中规定了4种不同的数据传输方式:等时传输、中断传输、控制传输、 批量传输。

控制传输:控制传输主要用来传输设备控制指令、设备状态查询及确认命令。当usb设备收到这些数据和命令后,将依据先进先出的原则按队列方式处理到达的数据。

中断传输:中断传输并不是我们之前所知道的中断,它的意思是以一个固定的时间间隔去查询usb设备有没有数据需要传输,如果有就传输,没有就等到下一个时间间隔再来查询。之所以需要主机来查询,是因为usb设备不能主动发起任何的传输,只有主机主动发起命令才能进行传输。

等时传输:以固定的传输速率,连续不断地在主机与usb设备之间传输数据,在传送数据发生错误时,usb设备并不处理这些错误,而是继续传送新的数据。该方式用来连接对数据的正确性要求不高而对时间极为敏感的外部设备。

批量传输:用来传输要求正确无误的数据。通常打印机、扫描仪和数码相机以这种方式与主机连接。

2、传输的组织结构

Usb的数据传递首先是基于传输的:中断传输、批量传输、等时传输和控制传输。

一次传输由一个或多个事务构成,事务可分为:in事务、out事务、setup事务

一个事务由一个或多个包(packet)构成,包可分为令牌包(setup),数据包(data),握手包(ack)和特殊包

一个包由多个域构成,域可分为:同步域(SYNC),标识域(PID),地址域(ADDR),端点域(ENDP),帧号域(FRAM),数据域(DATA),校验域(CRC)。

5、USB设备枚举

概念:USB设备在正常工作以前,第一件要做的就是枚举。枚举就是让host认得这个usb设备,并且为该设备准备资源,建立好主机与设备之间的数据传递机制。

流程:

      1. 获取设备描述符
      2. 复位
      3. 设置地址
      4. 再次获取设备描述符
      5. 获取配置描述符
      6. 获取接口、端点描述符
      7. 获取字符串描述符
      8. 选择设备配置
6、 linux usb系统

USB基础知识介绍(来源于国嵌)_第3张图片

从主机侧来看,最底层是usb主控制器,其上运行usb主控制器驱动,再上是usb核心层,然后是usb设备驱动(插入主机的u盘、鼠标等设备驱动)。因此主机侧的usb驱动包括两类:usb主控制器驱动和usb设备驱动。前者控制插入其中的usb设备,后者控制usb设备与主机通信。他们之间的usb核心负责usb驱动管理和协议处理的工作,向上上下都可以提供编程接口。

从设备侧来看,最底层是usb设备控制器(UDC),一条usb总线上只能有一个usb主控制器,但可以有多个usb设备控制器。其上运行UDC驱动,再往上是一个接口层,其功能就相当于usb核心,向上向下口可以提供接口,然后是gadget驱动。

你可能感兴趣的:(编程,linux,工作,扩展,电信,通讯)