首页 > 其他分享 >USB协议详解第13讲(USB传输-控制传输及事务组成)

USB协议详解第13讲(USB传输-控制传输及事务组成)

时间:2024-10-19 19:50:36浏览次数:1  
标签:13 USB 主机 控制传输 事务 传输 阶段 数据

1.前言

前面讲过USB一个传输由多个事务组成,一个事务由多个包实体组成。传输又分为控制传输、同步传输、批量传输、中断传输四种,今天我们主要讲解控制传输三个阶段及事务组成。

控制传输是一种特殊的传输方式,且传输过程相对复杂一些,但十分重要。当USB设备初次连接主机时,用控制传输传送控制命令等对设备进行配置,同时设备接入主机时,需要通过控制传输去获取USB设备的描述符以及对设备进行识别,在设备的枚举过程中都是使用控制传输进行数据交换。

控制传输主要包括控制读传输控制写传输无数据控制传输三种,如下图。

2.控制传输的结构

一次完整控制传输可以分为三个阶段:初始设置阶段--->数据阶段(可选)--->状态信息阶段

2.1初始设置阶段

初始设置阶段用于固定建立SETUP事务,标志一次控制传输的开始。

2.2数据阶段(可选):

初始设置阶段中命令如果要求读/写数据,数据阶段就会在这一阶段来具体交换数据(如果没有数据交换要求则可省去数据阶段步骤,具体有SETUP事务标准请求命令决定,如下)。

主机如果是控制读数据请求,则数据阶段为一个或者多个IN事务;

主机如果是控制写数据请求,则数据阶段为一个或者多个OUT事务;

主机如果是无数据的控制请求,则没有数据阶段。

数据阶段是由一到多个IN/OUT事务组成。这是由于有时候存在一个事务传不完的数据,所以可能存在多个连续IN/OUT事务的情况,在同一次数据传输阶段中事务类型(读写)必定相同。

2.3状态信息阶段(核心)

状态信息阶段是要返回数据传输的成功与否,具体也需要看控制传输的类型。需要注意的是,状态信息的数据传输方向与数据阶段方向相反。其实我们来思考下,主机给设备把一推数据发送完毕了(OUT事务),主机肯定要请求一个IN事务,让设备把自己的接收情况发给主机,你设备要给我说你在本轮接收数据有没有问题,同样的,设备把数据发送给主机(IN事务),主机肯定要发起一个OUT事务请求,告诉设备主机的接收情况,告诉设备本轮接收数据有没有问题。

3.抓包分析

3.1控制读传输抓包分析

控制读传输在初始设置阶段会发起一个SETUP事务,从这个SETUP事务我们可以知道是设备给主机传输数据,并且数据长度是255,具体的协议后期会详解,大家在这里把先控制传输理解到位,接着在数据阶段完成数据交换(因为是设备给主机传输数据,所以是数据阶段是IN事务),最后在状态信息阶段主机给设备发送一个OUT事务表明自己接收是否异常。

3.2写控制传输抓包分析

控制写传输在初始设置阶段同样会发起一个SETUP事务,从这个SETUP事务我们可以知道是主机向设备传输数据,并且数据长度是12,接着在数据阶段完成数据交换(因为是主机给设备传输数据,所以数据阶段是OUT事务),最后在状态信息阶段主机发起一个IN事务,请求设备回答接收情况。

3.3无数据的控制传输抓包分析

无数据控制传输在初始设置阶段同样会发起一个SETUP事务,从这个SETUP事务看到数据长度是0,因此无数据阶段,最后在状态信息阶段主机发起一个IN事务,请求设备回答接收情况。

4.控制传输各速率下支持最大包长度

5.控制传输事务组成如下

6.传输、事务、包组成学习架构图

本架构图后期再学习中会一步一步更新,每一节之后也会逐步完善并更新,最后会完整的展示出来传输、事务、包的结构,让大家在学习过程中对协议框架不混乱。

·

标签:13,USB,主机,控制传输,事务,传输,阶段,数据
From: https://www.cnblogs.com/linhaostudy/p/18485575

相关文章

  • USB协议详解第14讲(USB传输-同步传输及事务组成)
    1.前言前面讲过USB一个传输由多个事务组成,一个事务由多个包实体组成。传输又分为控制传输、同步传输、批量传输、中断传输四种,上一节我们讲了控制传输细节及事务组成,今天我们主要讲解同步传输及事务组成。同步传输用在数据量大、对实时性要求高的场合,例如音频设备、视频设备等,这......
  • 20222413 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    1.实验内容本周学习的主要内容为缓冲区溢出的shellcode技术,及其RNS、NSR、RS三种缓冲区溢出技术。此外,我还学习了在Linux系统和Windows系统中缓冲区溢出的实例和防范方法。在实验过程中,我初步了解并实践实现了后门原理,能够使用工具生成后门入侵控制其他主机。2.实验目标(1)使用......
  • 【Python技术之Django精品教学】第13课--Django模型集–2
    Django模型集–2模型字段–模型字段定义了将被存储在所提供的变量中的数据类型。要存储价格,整数类型更适合。要存储高度、长度等,浮动/十进制类型更合适。要存储标题或标题,最好是提供字符限制。对于写一篇文章,最好有一个没有字符限制的文本框。示例:Price=models.Integer......
  • 137,[复杂递归+时间日期]SQL训练之,力扣,1384. 按年度列出销售总额
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,原题力扣链接二,题干三,建表语句四,分析五,SQL解答六,验证七,知识点总结一,原题力扣链接.-力扣(LeetCode)二,题干Product 表:+---------------+---------+|ColumnName|Type|+------------......
  • 【刷题册】2024.10.13 - 2024.10.15
    目录一、2024.10.131.1BC153[NOIP2010]数字统计1.2NC313两个数组的交集1.2.1思路一:暴力O(N^2)1.2.2思路二:hash1.3AB5点击消除二、2024.10.142.1BC64⽜⽜的快递2.2DP4最⼩花费爬楼梯2.3数组中两个字符串的最⼩距离三、2024.10.153.1BC149简写单词3.2dd......
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.map&&set(无习题)
    C++中的set和map容器详细总结1.概述C++标准模板库(STL)提供了多种关联容器,用于管理键值对和集合的数据。其中,set和map是最常用的两种关联容器。set用于存储唯一的元素集合,而map则用于存储键值对,其中每个键都是唯一的。它们都使用红黑树(自平衡二叉搜索树)作为底......
  • DS几大常见排序讲解和实现(上)(13)
    文章目录前言一、排序的概念及其运用排序稳定性内部排序外部排序实际运用二、常见排序算法三、直接插入排序基本思想实现思路代码实现时间空间复杂度分析总结总结前言  我们今天在这里学排序,可能会感概思维的巧妙、前人的智慧  正文开始!一、排序的概念及其......
  • Leetcode 1135. 最低成本连通所有城市
    1.题目基本信息1.1.题目描述想象一下你是个城市基建规划者,地图上有n座城市,它们按以1到n的次序编号。给你整数n和一个数组conections,其中connections[i]=[x_i,y_i,cost_i]表示将城市x_i和城市y_i连接所要的cost_i(连接是双向的)。返回连接所有城市的最低成本,......
  • 013集——txt格式坐标转为dwg图(CAD—C#二次开发入门)
    如上图类似格式坐标(上图为随机输入数字,不涉及真实坐标数据) 加载dll文件,输入netload加载此插件,根据对话框提示打开txt文件,即可生成多段线,如下图:附部分代码:publicstaticvoidTxtToDwg(thisDatabasedb){Editored=Z.ed;OpenFileDialogofd;DialogResu......
  • 牛客练习赛130-A题题解
    牛客练习赛130-A题题解题目描述如下:给定两个整数x,y,jackle希望把x变成y。他每次可以进行如下两种操作之一:选择任意一个整数z,令x=x&z。选择任意一个整数z,令x=x|z。请问最少操作几次可以把x变成y。输入描述:本题有多组测试数据。第一行输入1个正整数T(1≤T......