(转)USB体系结构

转载地址:http://blog.ednchina.com/zenhuateng/203584/Message.aspx

USB总线接口层:物理连接、电气信号环境、信息包传输机制;主机一方由USB主控制器和根集线器组成,而USB方则由设备中的USB接口组成。

USB设备层:由主机方的USB系统软件和设备方的USB设备逻辑视图组成。

USB功能层:代表客户软件和一个给定的设备功能接口之间的关系。

USB系统软件执行很多关键的功能,包括:

设备的连接/断开检测;设备配置;带宽分配;管理客户程序和设备之间的控制流;管理客户程序和设备之间的数据流;收集状态和事务处理的统计信息;事务处理的安排;控制电气接口。

一套USB系统软件存在于系统中,用于管理所有和USB总线相连的所有USB设备的访问。USB系统软件是由于以下部分组成的:

USB驱动程序(USBD)---为客户软件驱动程序提供接口和服务,分配总线带宽,并管理配置过程;

USB主控制器驱动程序(HCD)---控制对主控制器的操作,安排事务处理,并监视事务处理的完成状态。

当一个事务处理被主机系统初始化以后,所有的传输设备和所有的集线器将看到这一务处理。每个事务处理包含一个地址字段,它标识目标设备或集线器,低速设备只能看见低速事务处理,它总是跟在一个高带的前导事务处理之后。

 

 

 

USB信号环境

 

USB采用了NRZI(反相非归零)编码和差分信号。NRZI编码方式既能够确保数据发送的完整性,双不需要独立的时钟信号和数据一起发送。数据流中的电平跳变代表0,而没有跳变则代表1。为保持同步,在连续传输6个1的情况下,强制在NRZI编码的数据流中加入跳变。这就确保接收器至少可以在每7个位的时间间隔内从数据流中会检测到一次跳动变。

一个USB的集线器通过监视差分数据线来检测设备是否已连接到自己的一个端口上。当没有设备连接到USB端口时,和D+和D-线相连的下拉电阻(15K)保证数据线接地,USB设备必须至少在D+和D-线的任意一条上有一个上拉电阻(1.5K)。全速设备D+上拉,低速设备D-上拉。保持时间2.5us。

USB传输

中断传输---用于在传统PC产品中被称为中断驱动设备的器件。由于USB不支持硬件中断,所以中断驱动的USB设备必须要被周期性地查询,以确定设备是否有数据要传输。

块传输---用于传输大块的没有周期和传输速率要求的数据。

同步传输---要求有一个恒定的发送速率。保证发送方和接收方之间能够实现传输率的匹配。

控制传输---用来把特定的请求传送给USB设备,它经常在设备配置中被使用。

USB事务处理

在USB上的每次传输广播都由一些信息包组成。这些信息包组合起来定义某个事务处理而某个事务处理又是作为一个大的传输的一部分执行的。事务处理由主机进行初始化,用于把数据发送到USB设备和从USB设备把数据发送出去。

事务处理般由三个阶段(令牌包阶段、数据包阶段、握手包阶段)组成,或者说由信息包组成。

令牌包阶段:每一个事务处理类型都从一个令牌阶段开始,它定义了事务处理的类型。有的令牌包跟随一个到两个附加的信息包;

数据包阶段:传输相关的数据。在一个事务处理中可以传输的最大数据包是1023字节。

握手阶段:对数据发送方提供了一个反馈信号,通知发送方数据是否已经被正确接收。

信息包有用来执行所有的USB事务处理的机制。


同步序列


包ID(标识符)


包特定信息


CRC


包结束标志

信息包

同步序列由8个位(00000001)组成,由于0用差分数据上的电平跳变来编码,所以这7个0在每一位开始的时候都建立一个电平跳变。这就提供了一个时钟,用来同步。同步性序列还通知USB接收器马上要有一个信息包被发送,这个信息包紧跟在这8位同步序列之后。

信息包的标识符定义了信息包的目标和内容,它分为令牌包、数据包、握手包、专用包(前导包)

信息包的ID:由四位标识符字段组成,后接四位包ID的反码。

信息包的特定信息:这些信息可以组成一个USB设备地址,一个时间片的序列,从USB设备发出或者发送到USB设备的数据,等等。

CRC:数据包使用16位的CRC,而别的包则5位的CRC。CRC的产生和检验仅仅用于信息包的具体数据。

信息包的结束(EOP):每个信息饭结束都收发送方发出一个信号来表示,具体方法是把两条差分数据线上的电压降低,并且这个低电压将持续两个位的传输时间,而且后接一个位的空闲时间。

令牌包的四种类型

SOF(时间片开始)-----指出下一个毫秒时间的开始;

IN-----表示一个USB事务处理,把数据从目标USB设备发送到系统;

OUT-----表示一个USB事务处理,把数据从系统发送到目标USB设备;

SETUP-----表示一次控制传输的开始。SETUP是控制传输的第一阶段,并用来把一个请求从系统发往目标USB设备。

SOF包内含有一个11位的时间片编号。SOF包定义了一个事务处理,它仅仅由令牌包组成。


同步序列


包ID(标识符)


11位的时间片编号


5位CRC


包结束标志

当软件希望从一个指定的设备读取信息时,就用到一个IN令牌。IN包通知目标USB设备数据正在被系统请求。IN事务处理用于各种USB传输类型中。一个IN令牌包由ID类型字段、ID校验字段、USB设备地址和端点地址以及5位的CRC组成。一个IN事务处理从一个IN包广播开始,后接一个从目标USB设备返回的数据包。在某些情况,还包括发回到目标设备的握手包,用来确认数据接收。

系统软件指定一个OUT事务处理,当数据发送到一个目标USB设备时,有三种类型的传输采用OUT事务处理,块传输、控制传输的数据阶段、同步传输。一个OUT包由ID类型字段、ID校验字段、USB设备地址和端点地址以及5位的CRC组成。OUT令牌包后跟随一个数据包和一个握手包(仅用于块传输)。

SETUP包仅仅在控制传输的建立阶段使用。SETUP包后跟随着一个数据包,和一个确认包。SETUP事务处理可以跟随一个或多个IN或OUT事务处理(数据阶段)。或者可以仅仅伴随一个状态阶段,状态阶段由一个最后的数据包组成,它从端点传向主机系统。一个SETUP包由ID类型字段、ID校验字段、USB设备地址和端点地址以及5位的CRC组成。

数据包---Data0和Data1

数据包的传输方向由事务处理类型确定,数据既可以传向USB也可以从USB设备传出。一个数据包由ID类型字段、ID校验字段、数据字段(0-1023字节)和16位CRC。

USB设备使用握手包来报告一个给定的事务处理的状态。数据的接收器负责给发送方发回一个握手包。

确认包(ACK)---确认数据包被无错误地接收了;

非确认包(NACK)---报告主机目标设备暂时不能接收返回的数据。在中断事务处理中,NACK表示当前没有数据可以返回到主机。

停止包(STALL)---目标设备用来报告它不能完成传输,并且要求软件进行干预,使设备从停止状态恢复。

前导包

在广播一个低速信息包之前,必须广播一个前导包,通知所有的集线器在这个前导包后面跟随一个低速的事务处理。前导包由一个同步序列和一个包的ID组成的,该包以全速传输。之后延迟四个全速位的传输时间。

事务处理

IN事务处理:数据被无错误地接收;(主机发送ACK包)

数据接收的时候有错误; (没有握手包)

目标设备暂时不能返回数据;(USB设备返回NAK包)

错误状态被清除之前,目标不能返回数据;(USB设备返回STALL停止包)

发生了一次同步传输,返回数据,没有握手运作。

OUT事务处理:数据被无错误地发送;(USB设备返回ACK包)

数据发送出错;  (没有握手包)

目标设备暂时不能接收数据;(USB设备返回NAK包)

错误状态被清除之前,目标不能接收数据;(目标设备返回STALL停止包)

发生了一次同步传输,数据被发送到目标设备,没有握手运作。

SETUP事务处理/控制传输:控制传输总是从一个SETUP事务处理开始,称为建立阶段。建立阶段定义控制传输的性质。某些控制传输包括一个数据阶段,该数据阶段由一个或几个IN或OUT事务处理组成。控制传输的最终阶段是状态阶段。该阶段确认所要求的操作已经成功完成了。控制传输以两种基本基本形式存在:①传输由建立阶段和状态阶段组成②传输由建立阶段、数据阶段和状态阶段组成。

SETUP事务处理的数据阶段包括8字节的信息,该信息指出了大量用于定义将被执行的设备请求信息。

错误恢复

信息包错误检查;

错误EOP;

总线超时(没有响应);

数据触发器错误检查;

串扰---在时间片结束之后发年事务处理;

LOA---总线活动丢失。

三种类型的包错误:包ID(PID);CRC;位填充错误。发生以上错误,接收方忽略这个信息包,并且不会返回一个信息包。

信息包的类型和CRC


信息包的类型


字段名


字段的最大长度


CRC


SOF


时间片编号


11位


5位


IN


设备地址和端点地址


11位


5位


OUT


设备地址和端点地址


11位


5位


SETUP


设备地址和端点地址


11位


5位


DATA0


数据


1023字节


16位


DATA1


数据


1023字节


16位


ACK





NAK





STALL





PREAMBLE




总线超时:事务处理的发送方在16个位时间内一定不会超时,但是在18个位时间后则一定时。

错误的EOP:如果接收方在发送方实际完成传输之前检测到包的结束(EOP)。错误的EOP往往会导致一个CRC错误。

数据触发出错:数据触发是一种机制,用来确保数据传输的发送方和接收方之间保持同步。数据触发机制解决了和握手包出错相关的问题。

串扰:如果在总线上的一个设备没有结束它的事务处理(不停地串扰),这种不断的串扰有可能对整个总线造成死锁。串扰在时间片结束时被检测到,如果设备在时间片结束时不处于空闲状态,那么这个设备必须被隔离,方法是把和这个设备相连的集线器端口禁止掉。

LOA---总线活动丢失:一个设备从一个包的传输开始,后接总线上的一个恒定的J或K状态,而且没有EOP。检测和处理类似串扰。

USB供电分配

USB电源管理

USB设备配置

设备描述符-----描述了设备所支持的配置的数量;

配置描述符-----指出了一个或多个接口而且定义了某些和这个配置相关的属性;

接口描述符-----定义了端点的数量,它们和接口相关,而且定义了某些和接口相关的属性;

端点描述符-----指出了和给定的端点相关的属性,以及那些主机软件需要的信息,这些信息可以确定这个端点应该怎样被访问;

字符串描述符-----可选的描述符,由UNICODE字符串组成。

类特定描述符-----设备类附加的描述符。

每一个描述符都包含一个类型字段,用它来识别上面列出的这此描述符的类型。

设备描述符:


字段编号


字段名


字段大小(字节)


字段取值


说明


0


长度


1


数字


描述符的长度(以字节为单位)


1


描述的符类型


1


常数


设备描述符,0x01


2


USB版本号


2


BCD


4


设备类


1



类代码


5


设备子类


1


子类


子类代码


6


设备协议


1


协议


7


最大数据包大小


1


数字


8、16、32、64


8


设备供应商


2


ID


供应商ID


10


产品


2


ID


产品ID


12


系列号


2


BCD


出厂编号


14


设备供应商索引


1


索引


15


产品索引


1


索引


16


系列号索引


1


索引


17


配置数目


1


数目

配置描述符:


字段编号


字段名


字段大小(字节)


字段取值


说明


0


长度


1


数字


描述符的长度(以字节为单位)


1


描述的符类型


1


常数


配置描述符,0x02


2


总长度


2


数字


用于配置的返回数据的总长度,包括所有被返回的用于配置的描述符(配置描述符、接口描述符、端点描述符、类或设备供应商自定的描述符)加在一起的长度。


4


接口的数目


1


数字


配置所支持的接口数目。


5


配置值


1


数字


作为Set Configuration的一个参数选择配置值。


6


配置索引


1


索引


描述配置的字符串描述符的索引。


7


属性


1


位段


D7     总线供电

D6     自供电

D5     远程唤醒

D4..0  保留


8


最大供电量


1


毫安


以2毫安为单位

每一个配置描述符都有一个唯一的配置值,用来配置这个设备。配置软件通过使用“Set Configuration”请求配置一个设备。这个配置值是在“Set Configuration”期间的SETUP事务处理的数值字段被指定的。

 

 

 

接口描述符:


字段编号


字段名


字段大小(字节)


字段取值


说明


0


长度


1


数字


描述符的长度(以字节为单位)


1


描述的符类型


1


常数


接口描述符,


2


接口数


1


数字


接口的编号。


3


可选设置


1


数字


用于为在前面的的字段标识出来的接口选择一个可选设置的数值。


4


端点数目


1


数字


本接口所使用的端点数目(0端点除外)。


5


接口类


1



类代码


6


设备子类


1


子类


子类代码


7


接口协议


1


协议


协议代码


8


接口索引


1


索引


字符串描述符的索引。

接口数目和可选设置的字段用于支持USB的可选设置特征。设备可以在相同的配置下定义可选的特征。一个支持可选设置的设备将包含一个或多个附加的接口和端点描述符,同样的接口,但是包含可选的设置。

 

 

端点描述符:


字段编号


字段名


字段大小(字节)


字段取值


说明


0


长度


1


数字


描述符的长度(以字节为单位)


1


描述的符类型


1


常数


端点描述符,0x05


2


端点地址


1


端点


描述符所描述的USB设备上的端点地址

D0..3  端点号

D4..6  保留

D7     传输方向,0:OUT;1:IN


3


属性


1


位段


D2..7 保留

D0..1 00 控制传输

01 同步传输

10 块传输

11 中断传输


4


最大包大小


2


数字


最大信息包的大小。

对于同步端点,该值用于保留进度表中的总线时间,这是每一个时间片传输数据都需要的。


6


间隔


1


数字


数据传输的时候,查询的时间间隔,以微秒为单位。对于块传输端点和控制传输端点,这个字段无效。对于同步端点,这个字段被置为1,对于中断端点,它的值为1-255。

端点描述符定义了在一个给定的设备里实现的实际寄存器。定义了每个寄存器的功能和特定的信息:端点要求的传输类型;传输的方向;带宽需求;查询间隔。

配置软件必须确定USB是否能够支持端点描述所指定的传输,传输所要求的带宽大小在MaxPacketSize字段被指定。如果端点的带宽需求超过了USB的所能提供的带宽,那么设备就不会被配置,而且用户会得到设备没有配置的通知。

时间: 2024-11-06 20:09:25

(转)USB体系结构的相关文章

USB协议规范学习(一)

什么是USB OHCI规范? OHCI(Open HCI)是目前使用比较广泛的三种USB主机控制器规范之一.USB体系结构是由四个主要部分组成:客户软件/USB驱动,主机控制器驱动(HCD),主机控制器(HC)和USB驱动.前两者由软件实现,后两者由硬件实现.而OHCI就是规范了主机控制器驱动和主机控制器之间的接口,以及它们的基本操作.在主机控制器驱动和主机控制器之间,有两个通信通道,第一个是应用位于HC的一套可操作寄存器,它们包括控制寄存器.状态寄存器和列表指针寄存器:另一个通道是应用称为主机

【驱动】USB驱动·入门【转】

转自:http://www.cnblogs.com/lcw/p/3159371.html Preface USB是目前最流行的系统总线之一.随着计算机周围硬件的不断扩展,各种设备使用不同的总线接口,导致计算机外部总线种类繁多,管理困难.USB总线正是因此而诞生的. USB总线提供了所有外部设备的统一连接方式,并且支持热插拔,方便了厂商开发设备和用户使用设备. USB遵循原则 USB的设计目标是对现有的PC机体系进行扩充,但是目前不仅是PC机,许多的嵌入式系统都开始支持USB总线和接口标准.USB

ARM体系结构调试系统

预计会有几篇较大篇幅的文章大体描述下ARM体系结构调试系统方面的软硬件接口设计. 简述 经历过软件开发基本上都知道调试的重要性,能一次写好,并且没有BUG的软件毕竟少之又少. ARM体系结构从ARMv4开始硬件支持各种调试特性,随着系统的复杂度提升,到现今的ARMv7,甚至ARMv8,ARM从硬件层面也提供了更多的调试方式. 本文从大方向上概述ARM调试系统的组成,包括其中的debug,trace,profiling等方面 ,又着重在调试系统的软硬件接口配合. 调试分类 从大方向上看,我们基本可

从USB驱动器运行Windows 10

我相信很多人和我一样.梦想着有个随身携带的U盘版操作系统.无论走到哪里,只要有电脑都可以随时运行自己配置好的操作系统.本篇博文就会一步步的教你如何从USB驱动器加载和运行Windows 10. 让我想象一个场景.也许你使用的电脑不是你自己的,里面的系统也许是XP或Win7 Win8,系统的设置也不太符合你工作的要求(比如他的计算机装的VS2005),肿么办呢,答案就是用自己配置好的并且挂载再USB驱动器里的操作系统. 首先,你需要一个USB闪存驱动器或外部硬盘驱动器,至少有16GB的可用空间,但

[总结]Android系统体系结构

Android 从图中可以看出Android主要的组成部分,其中底层是Linux的内核,包括的主要就是文件.内存.系统资源等的管理,Google在这部分的工作主要就是电源管理和一部分驱动,并且整合上层扩展及公共组件.如果要研究这部分,那应该是学习Linux的好的方向.接着一个重要的组成部分是Dalvik,一个Java虚拟机,类似jvm的东西,它主要就是提供一个虚拟的运行环境以适应上层的Java字节码(这里是.dex文件),理论上来说在其他的系统平台上装Dalvik,如Mac.Windows, 就

创建Windows 10 USB、DVD 或 ISO

如果你需要使用 USB 或 DVD 安装或重新安装 Windows 10,可以使用下面的介质创建工具通过 U 盘或 DVD 来创建你自己的安装介质.该工具提供了针对下载速度而优化的文件格式,而且可用于创建 ISO 文件. 工具下载地址:https://www.microsoft.com/zh-cn/software-download/windows10 使用 USB 或 DVD 全新安装Windows 10 按照这些说明执行全新安装 Windows 10.如果你想要免费升级到 Windows 1

USB第1-4章学习——USB结构体系概述

第一章  术语与缩写 一些术语与缩写,没有太多用处 第二章 绪论 无太多用处 第三章 背景 介绍了USB的一些硬件指标 使用场所等 可泛读了解 第四章 结构体系概述 (极其重要 是理解整个USB工作原理的基础,学习者都必须对这一章有深刻的理解才能学习好后面的内容) 4.1 USB系统描述 USB互连:分层星形拓扑结构 最大限制七层(复合设备算两层) USB设备 和USB主机(一个系统只能有一个) 4.2 物理结构 USB的物理特性 做电路可能会用到 但是对程序用处不大 4.3 电源 可以进行功耗

PCIe体系结构概述

0.PCI总线作为处理器系统的局部总线,主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器 PXI规范是CompactPCI规范的扩展 PCI Express的接口根据总线位宽不同而有所差异,包括X1.X4.X8以及X16.较短的PCI Express卡可以插入较长的PCI Express插槽中使用. 第I篇 PCI体系结构概述 第1章 PCI总线的基本知识 PCI Express总线简称为PCIe总线,PCI-to-PCI桥简称为PCI桥,PCI Express-t

ARM体系结构和汇编指令

第一节 可编程器件的编程原理 1. 可编程器件的特点 1 . CPU在固定频率的时钟控制下节奏运行 2 . CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行 3 . 这些可以被CPU解码执行的二进制指令集是CPU设计的时候确定的,是CPU的设计者(ARM公司)定义的,本质上是一串由1和0组成的数字.这就是CPU的汇编指令集 2. 从源代码到cpu执行过程 第二节 指令集对cpu的意义 1. 汇编语言与C等高级语言的差异 汇编无移植性,c语言有一定可移植性,jave等更高级的语言移