USB2.0 SPEC节选(Architectural)

4.1 系统描述

系统分3块:interconnect、devices、host

其中interconnect又包含总线拓扑、内部层关系、数据流模型、USB调度。

总线拓扑:简而言之,从根部的host到金字塔底部的function,基于时延考虑,最多支持7层。

USB里Host整个系统唯一。Devices包含hub和function。故为了避免歧义,上游设备最好不要粗暴地称作host。

4.2 物理接口电气特性

USB2.0支持高速、全速、低速。host和hub之间支持在高速模式下传输低速和全速数据,但hub和低速全速device之间就只能在低速全速下传输,此功能将全速和低速设备对高速设备可用带宽的影响降至最低。

通过选择合适的导体规格来匹配指定的 IR 压降和其他属性,例如设备功率预算和电缆灵活性,USB 允许电缆段的长度可变,最长可达几米。 为了提供有保证的输入电压电平和适当的端接阻抗,在电缆的每一端都使用了偏置端接。 终端还允许检测每个端口的连接和分离,并区分高速/全速和低速设备。

4.4 总线协议

USB 是轮询总线。主机控制器启动所有数据传输。

大多数总线事务涉及三种包(每个包由几种field拼成)的传输。每笔事务都是由主机控制器按计划发送描述事务类型和方向、USB 设备地址和端点号的 USB包开始。这种包称为“令牌包(token packet)”。

被寻址的 USB 设备通过解码适当的地址字段来选择自己。在给定的事务中,数据要么从主机传输到设备,要么从设备传输到主机。数据传输的方向在令牌包中指定。然后事务源(source)发送一个数据包或表明它没有数据要传输。通常,“目标(destination)”以握手包(handshake packet)进行响应,指示传输是否成功。

主机控制器和集线器之间有一些总线事务涉及第四种包的传输。这些类型的事务用于管理主机和全速/低速设备之间的数据传输。

主机上的源或目标与设备上的端点之间的 USB 数据传输模型称为pipe。有两种类型的pipestreammessageStream数据没有USB定义的结构,而message数据有。此外,pipe与数据带宽、传输服务类型和端点特性(如方向性和缓冲区大小)相关联。大多数pipe都是在一个USB 设备被配置时出现的。One message pipe, the Default Control Pipe,在设备上电后始终存在,以便提供对设备配置、状态和控制信息的访问。

事务调度允许对某些stream pipe进行流量控制。在硬件级别,可以通过使用 NAK 握手来限制数据速率,从而防止缓冲区出现underrunoverrun情况。 NAKed 后,在总线时间可用时事务会重试。流控制机制允许构建灵活的时间表,以适应对stream pipe的异构混合(heterogeneous mix)的并发服务(concurrent servicing)。 因此,可以以不同的间隔和不同大小的数据包为多个流管道提供服务。

4.5 健壮性

下列机制保证健壮性:

使用差分驱动器、接收器和屏蔽的信号完整性

控制和数据字段的CRC保护

attachdetach地检测以及资源的系统级配置

协议中的自我恢复,对丢失或损坏的数据包使用超时

stream数据的流控制以确保同步和硬件缓冲区管理

datacontrol pipe结构,以确保function之间地不利相互作用的独立

4.5.2 错误处理

该协议允许在硬件或软件中进行错误处理。 硬件错误处理包括报告和重试失败的传输。 USB 主机控制器将尝试最多 3 次遇到错误的传输,然后才将故障通知客户端软件。 客户端软件可以以特定于实现的方式进行恢复。

4.6 系统配置

4.6.1 device的接入

所有 USB 设备都通过称为集线器的专用 USB 设备上的端口连接到 USB。集线器具有用于报告 USB 设备在其端口之一上的连接或移除的状态位。主机查询集线器以检索这些位。在连接的情况下,主机启用端口并通过设备的控制管道在默认地址处寻址 USB 设备。

主机为设备分配一个唯一的 USB 地址,然后确定新连接的 USB 设备是hub还是fuction。主机使用分配的 USB 地址和端点号零(endpoint number zero) USB 设备建立其控制管道的末端。

如果被接入的是hubhub下的设备,则按上述步骤处理。

如果被接入的是function,会有对应的host软件去处理此次接入。

4.6.2 device的移除

USB 设备从集线器的一个端口中移除时,集线器会禁用该端口并向主机提供设备移除的指示。 然后由适当的 USB系统软件处理删除指示。如果移除是hub,则USB系统软件必须处理hub以及之前通过该hub连接到系统的所有设备的移除。

4.6.3 总线枚举

总线枚举是识别和分配唯一地址给连接到总线的设备的活动。因为USB允许device随时接入和移除,所以总线枚举是 USB 系统软件的一项持续活动。此外,USB 的总线枚举还包括对移除的检测和处理。

4.7 数据流类型

Data flow的概念的pipeendpoint强绑定,总共有4种,批量、中断、控制、同步,部分pipe建立时,USB会其分配带宽(根据devicebuffer大小?)。这4种不同的数据流类型应该是代表了USB会处理的各种具体业务的分类,属于软件业务的范畴。以其中比较复杂的同步传输为例,根据协议介绍,这类业务对传输速率和时延非常敏感,比如语音会议业务。而批量传输,则是侧重于数据量庞大的业务,如打印机数据。

4.8 usb device

设备在接入和枚举时会被分配一个地址,在地址之外每种设备自己会支持一种或几种pipe或者说endpoint,故host寻址是先地址再endpoint

device支持的endpoint中,endpoint 0是专门设计的控制pipe,所有设备的控制pipe有共同的访问机制。控制pipe里携带了描述该device的所有信息,有standard(协议规定的一些USB相关的关键特性)、class(取决于设备种类)、usb vendor(可以随便放什么)

4.8.2 function

多数Function直接就是带跟usb线,可以直接连到hubhost。也有封装多个functionUSB产品,其通过内置的hub将它们收到一起,然后对外只有一根usb线。这种复合设备在host看来,就是一个hub带数个不可移除的device

Function在使用前要对其进行配置,包括分配USB 带宽和选择特定功能的配置选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值