USB(Universal serial bus)的中文含义是通用串行总线。USB接口的特点是速度快、兼容性好、不占中断、可以串接、支持热插拔等。目前USB接口有两种标准,分别为USB1.1和USB2.0.
其中USB1.1标准接口的数据传输速度为12Mbps,USB2.0标准接口的数据传输速度为480Mbps。主板通常集成4-8个USB接口,并且在主板上还有USB扩展接口,通常USB接口使用一个4针插头作为标准插头,通过USB插头,采用菊花链的形式可以把所有的外设连接起来,并且不会损失带宽。USB接口电路主要由USB接口插座、电感、滤波电容、电阻排、保险电阻、南桥芯片等组成。USB接口电路的VCC0和VCC1供电针脚通过保险电阻和电感连接到电源插座的第4针脚,有的主板在供电电路中还设置有一个供电跳线,通过跳线可以选择待机供电或VCC5供电。如果选择待机供电,则在关机的状态下,USB接口也有工作电压。USB接口电路中的保险电阻用来防止USB设备发生短路时烧坏ATX电源,目前的主板一般使用贴片电阻或高分子PTC热敏电阻作为保险电阻。高分子PTC热敏电阻可以在出现短路情况时,自动升高内部电阻,起到保护的作用,同时在故障排除后,又会自动恢复到低电阻状态继续工作。USB接口电路数据线路中的贴片电感
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
和电阻排的作用是:在数据传输时起到缓冲的作用(抗干扰)。这个电阻排通常采用阻值为22欧或33欧的电阻。而数据线路中连接的电容排和电阻排起滤波的作用,可改善数据传输质量,电容排的容量一般为47PF,有的为100PF。
USB接口的工作原理是:当电脑主机的USB接口接入USB设备时,通过USB接口的5V供电为UDB设备供电,设备得到供电后,内部电路开始工作,并向+DATA针输出高电平信号(—DATA为低电平)。同时主板南桥芯片中的USB模块会不停的检测USB接口的+—DATE的电压。当南桥芯片中的USB模块检测到信号后,就认为USB设备准备好,并向USB设备发送准备好信号。接着USB设备的控制芯片就通过USB接口向电脑主板的USB总线发送USB设备的数据信息。电脑主板接收后,操作系统就会提示发现新硬件,并开始安装USB设备的驱动程序,驱动安装完成后,用户在系统中看见并使用USB设备。
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
USB 基本知识
USB的重要关键概念:
1、端点,位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)
2、帧,时间概念,在USB中,一帧就是1MS,它是一个的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作
3、上行、下行:传输由设备到主机为上行,由主机到设备为下行。
一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA。
数据在USB线里传送是由低位到高位发送的,USB数据是由二进制数字串构成的,首先数
字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。下面简单介绍一下域、包、事务、传输,请注意他们之间的关系。
一、 域
域是USB数据最小的单位,由若干位组成(至于是多少位由具体的域决定),域可分为七个类型:
1、 同步域(SYNC),八位,值固定为0000 0001,用于本地时钟与输入同步
2、 标识域(PID),由四位标识符+四位标识符反码构成,表明包的类型和格式。
3、 地址域(ADDR):七位地址,代表了设备在主机上的地址,地址000 0000被命名为零地址,是任何一个设备第一次连接到主机时,在被主机配置、枚举前的默认地址。
4、 端点域(ENDP),四位,由此可知一个USB设备有的端点数量最大为16个。
5、 帧号域(FRAM),11位,每一个帧都有一个特定的帧号,
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
帧号域最大容量0x800。
6、 数据域(DATA):长度为0~1023字节,在不同的传输类型中,数据域的长度各不相同,但必须为整数个字节的长度 7、 校验域(CRC):对令牌包和数据包中非PID域进行校验的一种方法。 二、包
包由域构成,有四种类型,分别是令牌包、数据包、握手包和特殊包,前面三种是重要的包,不同的包的域结构不同,介绍如下
包,可分为输入包、输出包、设置包和帧起始包(注意这里的输入包是用于设置输入命令的,输出包是用来设置输出命令的,而不是放据数的),其中输入包、输出包和设置包的格式都是一样的:SYNC+PID+ADDR+ENDP+CRC5(五位的校验码) 1、帧起始包的格式:
SYNC+PID+11位FRAM+CRC5(五位的校验码) 2、数据包:分为DATA0包和DATA1包,当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是DATA0,那第二个数据包就是DATA1。但也有例外情况,在同步传输中(四类传输类型中之一),所有的数据包都是为DATA0,格式如下: SYNC+PID+0~1023字节+CRC16
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
3、握手包:结构最为简单的包,格式如下 SYNC+PID 三、事务
事务分为IN事务、OUT事务和SETUP事务三大事务,每一种事务都由令牌包、数据包、握手包构成,每个包的发送有一定的时间先后顺序,因此事务分为三个阶段: 1) 令牌包阶段:启动一个输入、输出或设置的事务 2)数据包阶段:按输入、输出发送相应的数据
3)握手包阶段:返回数据接收情况,在同步传输的IN和OUT事务中没有这个阶段,这是比较特殊的。 1、 IN事务:
令牌包阶段:主机发送一个PID为IN的输入包给设备,通知设备要往主机发送数据。
数据包阶段:设备根据情况会作出三种应答(要注意:数据包阶段也不总是传送数据的,
根据传输情况还会提前进入握手包阶段)
A、设备端点正常,设备往入主机里面发出数据包(DATA0与DATA1交替)。
B、设备正在忙,无法往主机发出数据包就发送NAK无效包,IN事务提前结束。
C、相应设备端点被禁止,发送错误包STALL包,事务也就提前结束了,总线进入空闲状态。
握手包阶段:主机正确接收到数据之后就会向设备发送ACK包。
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
2、OUT事务:
令牌包阶段:主机发送一个PID为OUT的输出包给设备,通知设备要接收数据;
数据包阶段:比较简单,就是主机会设备送数据,DATA0与DATA1交替
握手包阶段:设备根据情况会作出三种反应
A、 设备端点接收正确,设备往入主机返回ACK,通知主机可以发送新的数据,如果数据包发生了CRC校验错误,将不返回任何握手信息;
B、设备正在忙,无法往主机发出数据包就发送NAK无效包,通知主机再次发送数据;
C、 相应设备端点被禁止,发送错误包STALL包,事务提前结束,总线直接进入空闲状态。 3、 SETUT事务:
A、令牌包阶段:主机发送一个PID为SETUP的输出包给设备,通知设备要接收数据;
B、数据包阶段:比较简单,就是主机会设备送数据,注意,这里只有一个固定为8个字节的DATA0包,这8个字节的内容就是标准的USB设备请求命令,共有11条。
C、、握手包阶段:设备接收到主机的命令信息后,返回ACK,此后总线进入空闲状态,并准备下一个传输(在SETUP事务后通常是一个IN或OUT事务构成的传输)。
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
四、传输
传输由OUT、IN、SETUP事务其中的事务构成,传输有四种类型:中断传输、批量传输、同步传输、控制传输,中断传输和批量转输的结构一样,同步传输有最简单的结构,而控制传输是最重要的也是最复杂的传输。
1、 中断传输:由OUT事务和IN事务构成,用于键盘、鼠标等HID设备的数据传输中
2、 批量传输:由OUT事务和IN事务构成,用于大容量数据传输,没有固定的传输速率,也不占用带宽,当总线忙时,USB会优先进行其他类型的数据传输,而暂时停止批量转输。 3、同步传输:由OUT事务和IN事务构成,有两个特殊地方,第一,在同步传输的IN和OUT事务中是没有返回包阶段的;第二,在数据包阶段所有的数据包都为DATA0
4、 控制传输:最重要的也是最复杂的传输,控制传输由三个阶段构成(初始设置阶段、可选数据阶段、状态信息步骤),每一个阶段可以看成一个的传输。控制传输其实是由三个传输构成的,用来于USB设备初次加接到主机之后,主机通过控制传输来交换信息,设备地址和读取设备的描述符,使得主机识别设备,并安装相应的驱动程序,这是每一个USB开发者都要关心的问题。
总结:USB的最小单元是“域”,由“域”构成了“包”,在由“包”构成了“事务”,最后由“事务”构成了“传输”,在应用
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
层面,我们看到的只是传输,所以USB协议栈就需要完成传输以下的所有事情。这对标准的USB协议栈提出了最基本的要求。
USB协议简介
USB是一种协议总线,即主机与设备之间的通信需要遵循一系列约定。协议内容较多,这里仅作一些简单介绍,深入学习,可参看USB规范(WWW.usb.org)。
为了理解协议中的名称,先看图10.32。该图突出了主机上的客户软件和USB逻辑设备(编程涉及的设备)之间的通信流(Communication Flow),该通信流跨越了USB驱动程序USBD、主控制器驱动程序UHCD、主控制器等硬件接口及其连接。端点(Endpoints)是USB设备的惟一可识别的部分,是主机和设备之间通信流的终点。每一个逻辑设备有若干个***端点,每一个端点在设计时被分配一个惟一的由设备确定的标识符,称之为端点
号。
如图10.32所示,将用于通信流流动的通道称
为
管
道
(Pipe),这是忽略了许多中间环
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
节的很形象的称呼,对于理解USB系统中的信息传输很有帮助。图中把3个端点看成了一个接口,关于接口的说明安排在后面。 1.包格式包的概念在前面已经介绍了,包是帧的基本成分。常用的包有令牌包、数据包和握手包。对于高速传输,还定义了事务分割专用令牌包(事务分割开始令牌包和事务分割完成令牌包)。 1)令牌包格式
在USB系统中,所有的通信都是由主机发出相应的令牌所引起的。令牌包格式图 10.33所示。
其中PID为包标识,ADDR为设备地址,ENDP为端点号,CRC5是对ADDR和ENDP域进行校验的5位CRC校验码,校验多项式为:G(X)=X5+X2+1。 2)数据包格式
数据包用于主机与设备之间的数据传输。数据包格式如图10.34所示。 其中PID为包标识,DATA为数据位,最多为8 192个位,DATA应是字节的整数倍。CRCl6是对DATA域进行校验的16位CRC校验码,校验多项式为:G(X)=X16+X15+X2+1. 3)握手包格式
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
握手包用来指示数据被成功接收、命令被接收或被拒绝等事务状态。握手包格式如图10.35所示。
有四种常用握手包(ACK、NAK、STALL和NYET)和一个专用握手包,握手包的类型是通过PID的编码来体现的。 ·ACK包表示接收器已成功接收数据。
·NAK包表示接收设备不能接收数据或发送设备不能发送数据。 ·STALL包表示端点已终止或不支持控制管道请求。 ·NYET包表示接收器还没有任何响应。 4)帧开始包SOF(Start Of )
在全速或低速时,主机每隔1 ms±0.0005 ms发出一个帧开始包SOF,在高速时,每隔125 μs±0.0625μs发出一个SOF,以表示开始一个新帧。SOF包的格式如图10.36所示。
其
中FmmeNumber为帧编号,每发一帧后Number加l,当11位都为1(即3FFH)时再加1又回到0。在SOF包中对Number域进行CRC校验。 2.PID域格式
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
上面的几种包的开始都是PID域。PID域的格式如图10.37所示。低4位用来标识不同的包,高4位分别为低4位的非。这样安排是为了保证对PID可靠的译码,从而也使得包的其他部分能得到正确解释。表lO.20表示了PID编码和对应的PID类型。其中第3列是PID的低4位,即PID编码。
表中有两种数据包PID,都用于数据的传输,以它们开头的两种数据包除了包PID部分有一位(及与它对应的反向位)不同外,其他部分都相同。设置这两种数据包是为了使发送方和接收方保持同步,这涉及到一些细节,将在10.3.6小节中介
绍。在图10.38~10.40中不妨将它们看成一种数据包。
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
3.USB传输的处理过程
前面已经提到USB系统中有四种传输:一个传输通常要分解成若干个事务;而一个事务的处理一般要经历令牌包、数据包和握手包三个阶段,但也有一些事务的处理没有数据包阶段或没有握手包阶段,还有一些事务只有令牌包阶段。下面对这四种传输的处理过程分别作一些介绍。 1)块传输
用于主机与USB设备之间的批量数据传输,通常一次块传输需要分解成若干个块传输事务。显然,一次块传输的方向是单一的,对主机而言,要么是输入,要么是输出。因此,一次块传输是由若干个IN事务或由若干个OUT事务组成的。图10.38所示是块传输事务处理过程示意图。图中的PING包和NYET包仅用于高速传输设备,初学者暂时可以不考虑。
对于要进行输入的块传输,一般要执行若干个IN事务。每
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
执行一个IN事务时,主机都首先发出IN令牌包。设备端点收到后做出响应,一般是回送一个数据包。如果不能回送数据,则回送NAK包或STALL包。NAK表示设备暂时不能回送数据;STALL表示端点一直停着或需要IJSB系统软件进行干预;如果主机收到合法数据包,则回以ACK握手包;如果主机在接收数据时发现有错,则不给设备任何回音。
对于要进行输出的块传输,一般要执行若干个OUT事务。每执行一个OUT事务时,主机都首先发出OUT令牌包,接着发出数据包。设备在收到数据包后,根据情况回以握手包;回以ACK表示数据已接收无误,并通知主机可开始下一个0UT事务,以便传送下一个数据包;回以NAK表示数据已接收无误,但是主机不要再送数据,因为设备暂时不能接收(如缓冲区满);如果端点已终止,则回以STALL,通知主机不要再重发数据,因为设备出现了故障;如果接收时出现CRC校验错,则不发任何握手包。
需要指出,IN事务和OUT事务不仅在块传输事务中用到,在其他几种传输事务中也要用到,当然,处理的过程可能有所不同。 2)中断传输
用于数据传输量小,无周期性,但对响应时间敏感,要求马上响应的数据传输。中断传输的名字暗示一个设备可以引起一个硬件中断,这个硬件中断将使主机进行快速响应。但真实
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
情况是中断传输和所有其他USB传输一样,只在主机访问设备时出现。之所以将其称为中断传输,是因为它可保证主机将在最短的延迟里响应或发送数据。中断传输的特别之处在于主机将按照特定的周期访问可引起中断的端点(称为中断端点),看是否有中断情况发生。图10.39所示为中断传输事务的处理过程。
对于要进行输入的中断传输,主机按照特定的周期执行IN事务,如果没有中断发生,中断端点回以NAK包;如果有中断情况发生,则回送中断数据。主机收到数据后,发一个ACK包。 对于要进行输出的中断传输,主机按照特定的周期执行OUT事务,在发送OUT令牌后,接着发送数据包。如果没有中
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
断发生,中断端点回以NAK包或STALL包;如果有中断情况发生且接收数据无误,则回送ACK包。需要指出,在设备没有中断发生的情况下,主机一直会按照特定的周期执行OUT事务,并且所发送的数据保持不变。当有中断发生时,才修改数据指针,指向下一个数据区。
一个中断传输由一个或多个IN事务或者一个或多个OUT事务组成。一个中断传输用以下两种情况之一结束:当请求的数据量被传送完时,或者当数据包的长度小于规定的最大值(包括0长度包)时。中断传输的结束表示要传送的数据已经到齐,接收方可以加以利用;而主机对中断端点周期性的查询还将继续进行下去,以便在下一个中断
情况发生时,开始下一个中断传输。 3)等时传输
用于有周期性、传输速率不变的数据传输。等时传输在每帧中传送的字节数是一定的。一个等时传输由一个或多个连续帧里每帧一个IN或一个OUT事务所组成。图10.40表示了等时传输事务的处理过程。可以看出,等时传输的IN事务和OUT事务只包括令牌包和数据包两个阶段,没有握手包阶段,也不
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
支持重试。 4)控制传输
控制传输提供了一种方法来配置USB设备,并对它的操作的某些方面进行控制。每个设备必须设置一个缺省的控制端点(通常是O号端点)。控制端点用来配置设备、控制设备状态以及设备操作的某些方面。控制端点响应一些通过控制传输发送过来的USB特殊请求。例如,当系统检测到设备时,系统软件必须读取该设备的描述符,以确定其类型和操作特性。 控制传输至少由两个阶段组成,也可以是三个阶段: ①SETUP阶段:控制传输总是从SETUP阶段开始,这个阶段把信息发送给目标设备,定义对设备的请求类型(例如,读设备描述符)。
②数据阶段:这个阶段仅仅是为需要数据传输的请求定义的。例如,在数据阶段,读描述符请求把描述符的内容发送给主机。一些请求在SETUP阶段之外不需要数据传输。 ③状态阶段:这个阶段总是用来报告被请求的操作的结果。
在SETUP阶段,一个SETUP
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
事务被用来向控制端点传输信息。SETUP事务类似于一个OUT事务,只是包标识PID是SETUP,而不是OUT。图10.41所示为SETUP事务的执行过程。SETUP事务的数据阶段总是利用DATA0 PID。如果接收正确,控制端点则回以ACK包;如果接收不正确或数据丢失,则不回送任何握手包。
控制传输的数据阶段不是必需的。如果需要有这个阶段,则它由一个或多个IN事务或者一个或多个OUT事务组成。数据阶段的所有事务的方向必须是一致的,即都是IN事务或都是OUT事务。数据阶段传送的数据量及方向是在SETUP阶段规定的。如果数据量超过了预先确定的数据包规模,则数据的发送需要多个能携带最大包的事务(IN或OUT),剩下的部分(不足最大包规模)再安排一个事务。
控制传输的状态阶段是该传输的最后一个阶段,它只需要一个事务。状态阶段的数据流方向应该与前面的阶段不同,并且总是利用DATAl PID.例如,如果数据阶段执行的是OUT事务,则状态阶段就是一个IN事务。如果一个控制传输没有数据阶段,则状态阶段由一个IN事务组成。图10.42所示为控制读传输、控制写传输以及没有数据阶段的控制传输的事务排列顺序、触发位的值(在括号内)及数据PID的类型。
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
上面介绍的传输及传输事务的处理过程反映了USB系统中数据传输的过程。注意到一帧(或微帧)中包括了四种传输事务,所以实际的传输过程要比这里所讲的复杂。 4.数据触发技术
在USB系统中采用了数据触发技术。数据触发是一种机制,用来确保数据传输的发送方和接收方之间保持同步,对于需要大量事务的一次长传输过程尤为重要。数据触发机制可以使握手包出错情况下发送方和接收方之间能重新同步。
数据触发仅仅支持中断传输、块传输和控制传输。支持数据触发机制的发送方和接收方在每一次数据传输时都必须具有触发位。当双方都认为数据传输已经正确完成以后,都会把自己的触发位转换为和原来相反的状态。两种类型的数据包(DATAO和DATAl)被交替传送,并且包的接收方将会把它和触发位作比较,以确定接收的包是否正确。发送方使用的数据包类型和它的触发位当前状态保持一致(例如,如果触发位为0,则
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
数据包用DATA0)。下面仅以OUT事务为例来理解数据触发机制。 例10.1 图10.43所示为无错误的OUT事务的处理过程和触发位的变化情况。假定发送方和接收方的触发位开始都是0。传输的过程如下: 事务处理l:
①主机向目标设备发送一个OUT令牌。 ②目标设备无错误地收到该令牌包。
③主机向目标设备发送一个DATA0数据包(和它的触发位保持一致)。
④目标设备收到数据包DATA0,它和触发位一致。 ⑤目标设备成功收到数据包DATA0,触发位转变为1。 ⑥目标设备向主机发送一个ACK握手包,通知主机数据已经被无错误接收。
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
⑦主机无错误地收到ACK包。
⑧成功地收到ACK包,主机把触发位转变为l。 事务处理2:
①主机向目标设备发送一个新的OUT令牌,开始下一个事务处理过程。
②目标设备无错误地收到该令牌包。
③主机向目标设备发送一个DAl、A1数据包(和它的触发位保持一致)。
④目标设备收到数据包DATAl,它和触发位一致。 ⑤目标设备成功收到数据包DATAl,触发位转变为0。 ⑥目标设备向主机发送一个ACK握手包,通知主机数据已经被无错误接收。
⑦主机无错误地收到ACK包。
⑧成功地收到ACK包,主机把触发位转变为0。
这个处理过程对每一个事务都是如此,直到整个传输完成。只要收到的数据包和触发位相一致,并且发送方无错误地收到ACK握手包,那么发送方和接收方就保持同步。
上面是数据包和握手包都被正确传输的情况。下面分别看一下数据包传输出错和握手包传输出错时的情况。
例l0.2 图10.44所示为一个传输的第m个OUT。事务的处理过程,期间数据包传输出现了错误。主机和目标设备所采取的行动如下:
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
事务处理m:
①主机向目标设备发送一个OUT令牌。 ②目标设备无错误地收到该令牌包。 ,
③主机向目标设备发送一个DATA0数据包(和它的触发位保持一致)。
④当目标设备收到数据包DATAO时,发现有错。
⑤因为检测到数据包的错误,目标设备将会忽略这个包。数据被丢弃,不向主机发握手包。因为数据包没有正确接收,触发位保持不变。
⑥主机等待握手包的返回,但是没有响应。在总线超时周期(16个位时间)到达后,主机检测到没有响应,于是它认为数据包的传输不成功,主机的触发位保持不变。主机必须在以后重新进行该事务处理。 事务m重新进行:
①主机再向目标设备发送OUT令牌。 ②目标设备无错误地收到该令牌包。
③主机向目标设备发送一个DATAO数据包(和它的触发位保持一致),这个数据包在上一次传送时没有成功。
④目标设备成功地收到数据包DATA0,它和触发位保持一致。 ⑤因为正确收到数据包DATA0,所以目标设备将触发位转变为1。
⑥目标设备向主机发送一个ACK握手包,通知主机数据已经被
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
无错误接收。
⑦主机无错误地收到ACK包。
⑧成功地收到了ACK包,主机把触发位转变为l。 由上面的处理过程可以看出,尽管传输发生了错误,但是主机和目标设备还是能够保持同步。
例10.3 图10.45所示为一个传输的第n个OUT事务的处理过程,期间由于ACK包错误而失败。对错误检测和恢复的每一步列举如下: 事务处理n:
①主机向目标设备发送一个OUT令牌。
②目标设备无错误地收到该令牌包。
③然后主机向目标设备发送一个DATA0数据包(和它的触发位保持一致)。 ④目标设备收到数据包DATA0,它和触发位一致。
⑤目标设备成功收到数据包DATA0,触发位转变为1。 ⑥目标设备向主机发送一个ACK握手包,通知主机数据已经被无错误接收。
⑦主机收到的ACK包出现了错误。
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
⑧由于主机检测到了错误,所以它不能确定目标设备是否已经成功地接收到数据。因此,主机的触发位没有改变(还是0)。主机假定目标设备没有收到数据,因而会重新进行该事务处理。 事务n重新进行:
①主机再向目标设备发送OUT令牌。 ②目标设备无错误地收到该令牌包。
③主机重新向目标设备发送DATA0数据包(和它的触发位保持一致),这个数据包在上一次传送时不知道目标设备是否已正确接收。
④目标设备无错误地收到数据包DATA0,但是它和触发位不一致。
⑤目标设备认为其本身和主机不同步,因而丢弃数据,并且触发位保持不变(1)。
⑥目标设备向主机发送一个ACK握手包,通知主机数据已经被无错误接收,这是因为主机明显没有收到上一次的ACK握手包。 ⑦主机无错误地收到ACK握手包。
⑧成功地收到了ACK包,主机把触发位转变为1。现在主机和目标设备就为下一次的事务处理做好了准备。
通过该例可以看出,主机和目标设备暂时在数据传输是否完成的问题上没有达成一致。然而,数据触发机制保证了不同步的状态能够被检测到,并且能够重新实现同步。
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.com.cn
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo8.com 版权所有 湘ICP备2023022238号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务