当USB插入USB总线时,USB控制器会自动为该USB设备分配一个数字来标示这个设备。另外,在设备的每个端点都有一个数字来表明这个端点。
USB设备驱动向USB控制器驱动请求的每次传输被称为一个事务(Transaction),事务有四种类型,分别是Bulk Transaction、Control Transaction、Interrupt Transaction和Isochronous Transaction。每次事务都会分解成若干个数据包在USB总线上传输。每次传输必须历经两个或三个部分,第一部分是USB控制器向USB设备发出命令,第二部分是USB控制器和USB设备之间传递读写请求,其方向主要看第一部分的命令是读还是写,第二部分有时候可以没有。第三部分是握手信号。以下针对这四种传输,分别进行讲解。

1.Bulk传输事务

顾名思义,改种事务传输主要是大块的数据,传送这种事务的管道叫做Bulk管道。这种事务传输的时候分为三部分,如图17-10所示。第一部分是Host端发出一个Bulk的令牌请求,如果令牌是IN请求则是从Device到Host的请求,如果是OUT令牌,则是从Host到Device端的请求。
第二部分是传送数据的阶段,根据先前请求的令牌的类型,数据传输有可能是IN方向,也有可能是OUT方向。传输数据的时候用DATA0和DATA1令牌携带着数据交替传送。

第三部分是握手信号。如果数据是IN方向,握手信号应该是Host端发出,如果是OUT方向,握手信号应该是Device端发出。握手信号可以为ACK,表示正常响应,也可以是NAK表示没有正确传送。STALL表示出现主机不可预知的错误。
在第二部分,即传输数据包的时候,数据传送由DATA0和DATA1数据包交替发送。数据传输格式DATA1和DATA0,这两个是重复数据,确保在1数据丢失时0可以补上,不至于数据丢失。如图17-11所示。

 
(点击查看大图)图17-10  Bulk传输
 
图17-11  Bulk传输时的令牌

2.控制传输事务

控制传输是负责向USB设置一些控制信息,传送这种事务的管道是控制管道。在每个USB设备中都会有控制管道,也就是说控制管道在USB设备中是必须的。控制传输也分为三个阶段,即令牌阶段、数据传送阶段、握手阶段,如图17-12所示。

 
图17-12  控制传输事务

3.中断传输事务

在USB设备中,有种处理机制类似于PCI中断的机制,这就是中断事务。中断事务的数据量很小,一般用于通知Host某个事件的来临,例如USB鼠标,鼠标移动或者鼠标单击等操作都会通过中断管道来向Host传送事件。在中断事务中,也分为三个阶段,即令牌阶段、数据传输阶段、握手阶段,如图17-13所示。

 
(点击查看大图)图17-13  中断传输事务

4.同步传输事务

USB设备中还有一种事务叫同步传输事务,这种事务能保证传输的同步性。例如,在USB摄像头中传输视频数据的时候会采用这种事务,这种事务能保证每秒有固定的传输量,但与Bulk传输不同,它允许有一定的误码率,这样符合视频会议等传输的需求,因为视频会议首先要保证实时性,在一定条件下,允许有一定的误码率。同步传输事务有只有两个阶段,即令牌阶段、数据阶段,因为不关心数据的正确性,故没有握手阶段,如图17-14所示。

 

usb四种传输模式bulk的更多相关文章

  1. USB:USB通信中的端点(endpoint)和四种传输模式

    USB的传输模式有4种,分别是控制传输(Control Transfer).中断传输(Interrupt Transfer).批量传输或叫块传输(Bulk Transfer).实时传输或叫同步传输(I ...

  2. usb中的传输模式

    别人总结的一个usb传输模式,保存一下 usb中的endpoint(端点)和传输模式 端点: 端点位于USB 外设内部,所有通信数据的来源或目的都基于这些端点,是一个可寻址的FIFO. 每个USB 外 ...

  3. USB的四种传输类型与端点

    1.事务 在介绍USB传输类型之前,请允许我先简答介绍一下USB事务. 事务一般由令牌包.数据包(可选).握手包组成. 令牌包:用来启动一个事务,总是由主机发送. 数据包:可以从主机到设备,也可以由设 ...

  4. C#批量插入数据到Sqlserver中的四种方式

    我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...

  5. C#_批量插入数据到Sqlserver中的四种方式

    先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...

  6. 实现web数据同步的四种方式

    http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...

  7. C#批量插入数据到Sqlserver中的四种方式 - 转

    先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...

  8. linux下实现web数据同步的四种方式(性能比较)

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享2.rsync +inotify实现web数据同步3.rsyn ...

  9. Windows 电脑的四种运行状态工作状态 (Working), S0 睡眠状态 (Sleep), S1 或 S3 休眠状态 (Hibernate), S4 关机状态 (Shutdown), S5

    == Windows 电脑的四种运行状态 == 这四种运行状态(或称电源状态)是: 工作状态 (Working), S0 睡眠状态 (Sleep), S1 或 S3 休眠状态 (Hibernate), ...

随机推荐

  1. linux之文件目录,输入及输出

    文件目录结构 ls 查看文件 ll 查看详细文件 文件和目录被组织成一颗倒置的树状结构 文件系统从根开始,'/' 文件名严格区分大小写 隐藏文件以.开头 文件的分隔符为'/' 文件命名规范 文件字符最 ...

  2. centos 7.3镜像制作

    1.在KVM环境上准备虚拟机磁盘 [root@localhost ~]# qemu-img create -f qcow2 -o size=50G /opt/CentOS-7-1511-x86_64_ ...

  3. java 数组学习

    遍历数组 --- for和foreach int[][] A = {{2,4},{3,5}}; int i = 0; for (int[] is : A) { i++; int j = 0; for ...

  4. 【神经网络与深度学习】Google Snappy - 一个高速压缩库

    Snappy已经被Google开源,作为一个压缩库,它可以利用单颗Intel Corei7处理器内核处理至少每秒250MB~500MB的数据流. Snappy的前身是Zippy.虽然只是一个数据压缩库 ...

  5. flutter环境配置(windows)

    参考以下链接 下载安装步骤: https://www.cnblogs.com/yangyxd/p/8809512.html 安装Flutter环境遇到Android license status un ...

  6. flask类装饰器

    from flask import Flask,request,views from functools import wraps app = Flask(__name__) #自定义登录装饰器 de ...

  7. 必须要掌握的linux目录路径知识

    一./etc/sysconfig/network-scripts/ifcfg-en33    配置网络地址及GW等. 下面图片是一些常用的linux命令: nmtui(setup)---------- ...

  8. MSF魔鬼训练营-3.3.2 口令猜测与嗅探

    密码暴力破解以SSH为例,其他协议方法类似 SSH      msf > use auxiliary/scanner/ssh/ssh_login msf auxiliary(ssh_login) ...

  9. 第四周课程总结&实验报告二

    第四周课程总结 第四周课程总结 本周重点为学习String;首先String用以创建字符串,且通过有一次课堂练习加强理解到:String 类是不可改变的,一旦创建了 String 对象,那它的值就无法 ...

  10. (模拟)关于进制的瞎搞---You Are Given a Decimal String...(Educational Codeforces Round 70 (Rated for Div. 2))

    题目链接:https://codeforc.es/contest/1202/problem/B 题意: 给你一串数,问你插入最少多少数可以使x-y型机器(每次+x或+y的机器,机器每次只取最低位--% ...