USB模块详细阅读文档

发布时间 : 星期五 文章USB模块详细阅读文档更新完毕开始阅读

应的端点描述符上,表示每次等待完成的事务。

批量(Bulk)传输端点描述符队列的首地址保存到UHC BULK Head Endpoint Descriptor(UHCBHED) 寄存器中.控制(Control)传输端点描述符队列的首地址保存到UHC Control Head Endpoint Descriptor (UHCCHED)功寄存器中。另外一个单独的寄存器(HCCA)寄存器指向周期传输的链表,其中包括32个指针分别指向32个中断传输ED队列以及指向完成队列的Done指针。

UHC访问端点描述符链表的顺序如图4-1所示,每当1毫秒帧传输开始UHC首先处理非周期调度(控制传输、批量传输的ED链表),在预先编入控制器的时隙到了之后,不再处理非周期传输而是通过HCCA寄存器处理周期性的传输.每次处理周期传输UHC都是只处理一个中断链表,每完成1毫秒帧的传输,UHC Frame Number Register增加1,其值作为中断ED链表的索引来访问下一个中断ED链表。中断链表的末尾总是连接到同步端点描述符(ED)链表的开始,这样在每1毫秒帧的传输中都能处理同步传输,所以同步传输的周期为1毫秒。一旦同步传输完成,如果当前帧还有剩余时间,UHC可以自由地继续处理控制和批量传输。如果传输完成或者在执行传输描述符时发生错误,uHc连接传输描述符(TD)到完成(DOne)队列,UHC驱动程序可以检测传输中的状态信息。

图4-2 OHCI端点链表调度机制

所有的传输都是用标准传输描述符(DT)链表结构调度的,如图4-2所示端点描述符(ED)描述了每个USB设备上的端点信息,对于同一个端点的传输描述符(TD)都链接到相应的TD队列中,每次传输按照TD的信息完成。每次OHCI传输只处理一个TD,然后下一次传输则从下一个ED链接的TD队列开始,这样保证每个端点都有相同的传输机会。

每1毫秒OHCI帧都要首先处理控制和批量传输,直到UHC Frame Remaining Register 的值小于或者等于UHC Periodic Start Register的开始字段的值为止。处理中断和同步端点描述符链表从当前帧的中断头指针开始。HCCA寄存器规定了32个中断头指针所在内存的HCCA域的基地址,帧号中的至少5个bit位被用来作为中断指针链表的索引。在每个1毫秒帧中处理一个中断链表。

每个USB端点都有端点描述符,提供和位置相关的信息(设备地址和端点号)和端点的特性。另外,当UHC驱动程序排定传输时,端点描述符还包含指向传输描述符的指针。图4-3是端点描述符的格式,端点描述符字段的定义请参考OHCI协议1.0.

图4-3 端点描述符格式

传输描述符包含执行传输的必要信息,例如01JT和IN数据的内存缓冲区位置,完成状态等。传输描述符包括两种类型:一般传输描述符和同步传输描述符。一般传输描述符用于控制,批量,中断传输。同步传输描述符只用于同步传输,一般传输描述符的定义如图4-4所示,一般传输描述符字段的定义请参考OHCI协议1.0:

图4-4 一般传输描述符格式

同步传输描述符为32字节,描述符包括一个开始帧号(在开始帧字段),帧号包括16位定义什么时候开始同步传输。UHC从每个实际帧的低16位中减去这16位的开始帧值来决定传输什么时候开始。如果结果是负数,UHC就知道开始点还没有到达,则跳过这个同步传输描述符。如果开始帧和当前帧号匹配,UHC就开始从缓冲页面0传输数据。数据在缓冲区的实际位置在偏移字段0定义。下一帧的数据放在偏移字段1,依次类推。每个数据包传输后,传输描述符的偏移值被完成状态信息改写,称为包状态字(PSW)。高4位定义情况编码,剩下的位指示传输的大小,同步传输描述符格式如图4-5所示:

图4-5 同步传输描述符格式

USB支持4种传输类型:控制,批量,中断,同步。每一种传输都是通过传输描述符TD(一般/同步)来进行处理的。每次传输一般包括三个包,如图4-6所示,然而,一次传输根据类型不同,可以由一个,两个,或三个包组成。这里的包是USB主控制器通过USB电缆传输给USB外围设备的数据。

图4-6 由3个 包组成的USB传输

图4-7给出了USB数据包的格式。紧连在各个包头的是一个同步序列,允许USB设备同步包内的输入位。包的类型由一个位模式定义,成为包的ID(PID)。PID后面是包的特定信息(例如地址或数据),根据包的类型不同,具体的内容也不同。最后,每个包以一个循环冗余校验位序列结束,来校验包内信息的正确性每个包的尾部是一个包的结束符(EoP)。包又分为令牌包、数据包和握手包三种,前面已有介绍。

图4-7 USB包格式

4.4 USB主控制器模拟原理

USB主控制器模拟器是全系统模拟器的一个主要部分,它通过软件来模拟USB主控制器的功能和操作。其程序设计主要包括2个方面:对USB主控制器逻辑的模拟和寄存器读写操作的模拟.USB主控制器逻辑的模拟是按照OHcl l.oa协议的描述,对USB主控制器处理USB传输描述符流程进行模拟,并通过消息队列的形式模拟了USB主,从控制器之间的数据传输。USB主控制器寄存器读写操作的模拟是对寄存器读写操作的行为进行模拟。通过上面2个方面的模拟,使得USB主控制器(UHC)驱动程序对UHC模拟器的操作如同操作真正的USB主控制器一样。图4-8描述了UHC模拟器的结构:

图4-8 UHC模拟器结构

5. USB从控制器模拟

5.1 USB从控制器功能及特性 5.2 USB从控制器功能简介

5.3 USB Device Framework协议介绍

一个USB设备被分为3个层次:

. 最底层是总线接口,用于接收和发送数据包。

联系合同范文客服:xxxxx#qq.com(#替换为@)