USB2.0官方协议手册阅读笔记(2)——数据流模型

1. 前言

这篇博客阅读官方手册5章的内容

  1. USB Data Flow Model

在这里插入图片描述

第5章描述了一些关键的概念,了解每层具体的前必须完整的阅读第5章。物理视图会在6,7,8章中详细说明,逻辑视图会在9,10章中详细说明。

学习一个协议很重要的几个点:

  1. 整体结构
  2. 特异性和共性

需要协议英文版原文的可以评论区留言,我私发,工作日我都会上线。


2. 总体介绍

USB系统的简单视图,这体现了USB系统最重要的两个实体。
USB Host为主,USB Device为从,一切事务都是由Host发起!

简单视图

分层的思想已经深入了当今任何一个计算机网络的通信协议,接下来就是分层的解释,以下内容有别于传统的物理层,数据链路层和应用层的分法。

USB协议的数据流模型,将模型分为三层:

名称功能
Function Layer通过适当匹配的Client Software为Host提供额外的功能*
USB Device Layer是USB System Software用于对Device执行通用USB操作的视图
USB Bus Interface Layer提供了Host和Device之间的物理连接,信号连接,数据包连接

如下图5-2所示:这是本文中唯二重要的两个图:要理解记忆!
在这里插入图片描述
这里有四个最重要的概念,理解和记忆这几个概念对后面的细节学习帮助很大。

名称作用
USB Physical Device在USB线缆的终端,提供服务
Client Software运行在Host上的软件,对应一个特异的USB Device,生产商提供
USB System Software操作系统自带的,支持USB的软件 ,完成USB的管理工作
USB Host Controller允许将USBDevice连接到Host上的硬件和软件,Host侧的USB Bus Interface

两个重要概念在手册的后文中才会提到,但是我觉得把它放到这里更方便大家理解分层的思想。

名称作用
Host Controller Driver (HCD)USB Host Controller与USB System Software之间的软件接口
USB Driver (USBD)USB System Software与Client Software之间的接口

这样分层其中一个好处就是:Client Software开发工程师无需关心USB Host Controller的具体实现。


3. 重点介绍

接下来分四个部分介绍重要概念,分别是:

  • Bus Topology(总线拓扑)
  • Communication Flow Models(通信流模型)
  • Bus Access Management(总线访问管理)
  • Special Consideration for Isochronous Transfers (同步传输需要考虑的)

3.1 总线拓扑

这一节主要从四个角度说明:

  1. Host and Devices: USB中最重要的两个元素
  2. Physical Topology: USB各个元素时如何连接的
  3. Logical Topology: USB各个元素的分工
  4. Client Software-to-function Relationships: client software和对应的function是如何关联的

3.1.1 Host and Device

Host端由三个部分组成:

  • USB Host Controller
  • Aggregate USB System Software (USB Driver, Host Controller Driver, and host software)
  • Client Software

Device端也是有三个部分组成:

  • USB bus interface
  • USB logical device
  • Function

USB Device为Host提供了额外的功能。USB Device提供的功能类型差别很大。但是,所有的USB Device都为Host提供相同的基本接口(interface)。这允许Host以相同的方式管理不同USB Device


3.1.2 Physical Bus Topology

物理总线结构:树状图

USB上的Device通过一个分层的星形拓扑结构在物理上连接到Host上

compound device的思想:

compound device:一个hub和多个device打包,组成一个的新的device,在USB系统中只会被分配一个Device地址,但是 compound device内部的Hub会为其下面的每个Device分配地址。结构如下图5-5所示:
compound device


在High Speed的系统中,Hubs还充当了一个特殊的作用,将Full/Low Speed的环境与High Speed的环境隔离开来,可以理解为每个High Speed Hub基本上增加了一个(或多个)额外的Full/Low Speed Bus;

在这里插入图片描述


3.1.3 Logical Topology

Host与Logical Device的关系:根与节点
当把Hub也看做一个Logical Device时,逻辑视图可以简化为下图

在这里插入图片描述


3.1.4 Client Software-to-function Relationships

Client Software与function中的interface之间的关系:一一对应

Client Software必须使用USB software programming interfaces来操作对应的function,而不是直接操作function。(更加细化的分解可以看下文的图5-10)

在这里插入图片描述


3.2 通信模型(重点)

此模型展示了Client Software <> function的数据流,如5-9图所示:

在这里插入图片描述

USB Logical Device是endpoint的集合。在Function的视角里,endpoint的集合是interface。
The USB System Software通过the Default Control Pipe管理device。

在上图中,Client software表示为集合的形式,在实际的一个USB系统中,Function不止一个interface。Client software通过Pipe bundles (与endpoint集相关联)管理interface。Client software发起请求,在host上的 buffer 和USB device 的endpoint 之间传输数据。具体过程如图5-10所示:

在这里插入图片描述


3.2.1 Endpoint

可以说Endpoint的概念在这一章的内容中是最重要的。因为它是Host与Device通信的终端。任何一个Device都由多个相互独立的Endpoint组成,每个Device在连接到系统时,会被分配一个特有的地址,而Device内的每个endpoint在设计之初就被分配了 the endpoint number,每个endpoint还有一个单向的方向,所以,一个系统中的每个endpoint都是唯一的。(加粗的三点使endpoint唯一)

Endpoint有如下特征:

  • 总线接入频率/延迟要求
  • 带宽要求
  • Endpoint number
  • 错误处理行为要求
  • 端点能够发送或接收的最大数据包大小
  • 端点的传输类型
  • 在端点和Host之间传输数据的方向

简单的Endpoint组合的集合来实现更加复杂的功能。

在每个Device中都有两种Endpoint:

  • endpoint0:
    前面说到endpoint的传输都是单向的,但是0不是,它是双向的。The USB System Software使用endpoint0初始化逻辑Device,因为endpoint0在上电后就能被使用。这种配置方法被称为:the Default Control Pipe。

  • 其他endpoint:
    low speed Device最多两个endpoint(除endpoint0之外)
    full speed Device最多15个输入+15个输出(除endpoint0之外)
    上电后无法使用,需要完成配置之后才可以


3.2.2 Pipe

USB Pipe是Device上的endpoint与Host上的Client Software之间的关联。Pipe允许数据在Host上的内存缓冲区到Device上的endpoint之间移动。有两种互斥的管道通信方式:

  • Stream: Data没有usb定义的结构
  • Message: Data按照usb定义的结构

无论是何种方式,USB都对它们进行透明传输,不解释数据。Pipe与如下特性相关:USB数据带宽、传输类型、endpoint的属性、最大数据有效载荷大小

这里有一个特殊的Pipe:
the Default Control Pipe: 由endpoint0的两个端点组成的管道,Device通电并复位,则此管道始终可用,the USB System Software使用the Default Control Pipe来确定Device识别和配置要求,并配置Device。the Default Control Pipe归the USB System Software软件所有,其他软件想要使用必须通过the USB System Software。

Software client 通常通过 I/O Request Packets (IRPs) 来请求数据,将其发送到pipe中,等待完成和回复。如果在非同步传输时,遇到以下两种情况将停止IRP,之前所有未完成的IRP都将被放弃:

  1. a STALL send to a host
  2. three bus errors in a IRP

Stream Pipe:
没有数据结构的要求,从一端流入,并以相同的顺序流出(First-in,First-out),但是一个Pipe中的传输流向总是单向的,每个单向的Pipe会绑定一个endpoint number(相反的Pipe还是可以使用这个endpoint number)

Stream pipes 支持bulk、isochronous、interrupt 传输模式

Message Pipe:
Message Pipe与endpoint的交互方式与Stream Pipe不同。
一般分为三个步骤:

  1. 从Host向USB Device发送一个请求
  2. 进行数据传输。
  3. 传输状态信息。

Message Pipe允许在两个方向上的通信流,The Default Control Pipe是一个Message Pipe。


3.4 总线访问管理


3.5 同步传输需要考虑的


4. 后言

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bigbeea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值