目录

  • 1. 前言
  • 2. 总体介绍
  • 3. 重点介绍
    • 3.1 总线拓扑
      • 3.1.1 Host and Device
      • 3.1.2 Physical Bus Topology
      • 3.1.3 Logical Topology
      • 3.1.4 Client Software-to-function Relationships
    • 3.2 通信模型(重点)
      • 3.2.1 Endpoint
      • 3.2.2 Pipe
    • 3.4 总线访问管理
    • 3.5 同步传输需要考虑的
  • 4. 后言

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所示:


在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. 后言

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

  1. USB2.0官方协议手册阅读笔记(1)——总体介绍

    目录 1. 前言 2. 总体介绍 2.1 USB特性 2.2 速率模式 2.3 拓扑结构 2.4 物理结构 2.5 总线协议 2.6 USB Device 2.6.1 Hubs 2.6.2 Funct ...

  2. Xilinx AXI USB2.0 Device IP 手册阅读笔记

    目录 1. 前言 2. 概要 2.1 USB2.0协议特点: 2.2 The AXI USB 2.0 Device介绍 2.2.1 Endpoint0: 2.2.2 Endpoint1~7: 3. 详 ...

  3. sed 手册阅读笔记转

    原文链接sed 手册阅读笔记摘要sed 手册本身不太适合初学者,我在看的过程中加了一些 自己的注释和一些例子,帮助理解,如有偏差或错误,请指出,多谢.目录1. sed的工作原理 2. sed中如何选择 ...

  4. 802.11ac协议白皮书阅读笔记

    802.11ac协议白皮书阅读笔记 定义 对比 关键技术 信道带宽管理技术 MU-MIMO 更高阶的调制-256QAM A-MPDU帧聚合 总结 定义 802.11ac是继802.11n之后的新Wi- ...

  5. 14015.xilinx-芯片手册阅读笔记

    文章目录 1 xilinx芯片手册阅读笔记 1 Introduction 介绍 1.1 System Block Diagram 系统框图 1.2 Power Domains and Islands ...

  6. USB2.0协议原文阅读笔记

    1. 前言 在了解一个协议时,有几点是十分重要的: 层次结构 应用场景 不同的开发者,关心的协议层不一样,不是所有的都需要掌握. 为了向下兼容的设计 USB2.0是从USB1.0的基础上发展而来的,能 ...

  7. USB 3.0规范中译本 第4章 超高速数据流模型

    转自:http://www.cnblogs.com/coryxie/p/3956235.html 本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 本章展示数 ...

  8. Java开发手册阅读笔记

    <Java开发手册>阅读理解,抛砖引玉 前言 最近开发一个项目,由于是第一次搞开发没什么经验,由于在编码上没有什么约束,完全依靠idea的自动提示,在后期重构和开发时带来了一些麻烦,而且代 ...

  9. 《TCP IP 详解卷1:协议》阅读笔记 - 第十章

    阅读须知:笔记为阅读<TCP IP 详解卷1:协议>后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别 ...

最新文章

  1. 网页调用本地播放器的代码支持ie,chroome, 火狐不支持
  2. IDEA不能一个窗口管理多个项目?那是你不会用!
  3. windows 10 快速修复
  4. mysql注册成功为啥启动不了mysql_mysql启动不成功的解决方法
  5. IDEA快速 实现 SpringMVC 整合xfire 发布 WebService 服务
  6. 跟随腾讯WeTest一起来2019Unreal Open Day!
  7. 【图论】拉普拉斯矩阵(Laplacian matrix)
  8. 丁腈橡胶自然老化时间_氙灯老化试验箱和紫外光老化试验箱的区别
  9. 数据分析工作到底在做什么
  10. 新书推荐 | Java核心技术卷Ⅰ:基础知识(原书第11版)
  11. 原创 VPP使用心得(十六)静态路由添加流程
  12. Docker详细学习文档
  13. 【机器学习】特征工程的最佳实践
  14. 碉堡了!最大 18 禁网站用 AI 和 ML 来做视频分类加标签
  15. Apache站点下载大文件不完整原因及解决办法(128M自动中断)
  16. 进程调度 优先级c语言,按优先级调度算法实现进程调度的程序
  17. android10.0(Q) root QCOM-SM6125 user版本打开root权限
  18. 项目一 认识Linux操作系统
  19. “精要主义之父”格雷戈·麦吉沃恩小传
  20. ddr3和ddr4区别

热门文章

  1. PLC远程维护解决方案
  2. selenium自动翻页
  3. 游戏开发心得——书籍篇——《游戏引擎框架》-专业工具
  4. 河南省各地市经纬度及编码数据
  5. 多核处理器上的MMU和TLB
  6. Android安全防护/检查root/检查Xposed/反调试/应用多开/模拟器检测(持续更新1.0.5)
  7. google十大信条
  8. Ubuntu20.04 使用Vundle安装Vim插件YouCompleteMe
  9. AIS数据下载并处理(python)
  10. java接收webhook,使用Java为Hangouts Chat API设置传入的webhook?