SCSI与USB的关系

SCSI与USB的关系

由于BusHound在使用过程中,直接把USB和SCSI混为一谈,相关设计的时候这些东西也经常放在一起来讲,导致稍微缺乏经验的人傻傻分不清楚。因此在这里特别说明一下SCSI和USB分别是什么东西,以及他们是怎么联系在一起的。

 

一、USB概述

 

简介

通用串行总线 (Universal Serial Bus,USB) 是一种新兴的并逐渐取代其他接口标准的数据通信方式,由 Intel、Compaq、Digital、IBM、Microsoft、NEC及Northern Telecom 等计算机公司和通信公司于1995年联合制定,并逐渐形成了行业标准。USB 总线作为一种高速串行总线,其极高的传输速度可以满足高速数据传输的应用环境要求,且该总线还兼有供电简单(可总线供电)、安装配置便捷(支持即插即用和热插拔)、 扩展端口简易(通过集线器最多可扩展127 个外设)、传输方式多样化(4 种传输模式),以及兼容良好(产品升级后向下兼容)等优点。

 

以上摘自百度百科,但是可以看到通篇都没有提到半点SCSI。实际上USB就是一种数据传输总线,需要注意的是他传输的是数据,以USB线作为载体,至于数据要怎么使用,那才是SCSI的事情,USB只负责把数据发送出去和接收回来。所以不管你发送的是命令,还是状态还是什么的,在USB看来都是数据包。

 

所以从数据传输这一层面上,它与Uart、IIC并没有太大区别,都是一种约定好的数据传输协议。不过倘若打开USB协议文档,就会直呼:这跟Uart哪里一样了!

在这里概括一下这几层每一章的内容:

 

1.Mechanical

机械接口标准,也就是眼睛能看到的那个USB接口的制造标准

类似这样的,USB接口还有很多种形态,不一一列举了

 

2. Physical Layer

这一层是模电到数电的信号转换,也就是相关的电气要求

有个对这一层进行的测试就是眼图测试。

 

 

3. Link Layer

即为链路层,这一层主要是主要工作是保证数据包在连线当中的正确传输。为了保证提高容错率,还提供了编码纠错。

本章的重点是定义数据包和Link命令结构、Link层控制和电源管理功能、Link训练状态机(LTSSM)

 

4. Protocal Layer

协议层,控制的是端到端的数据流,这一层是建立在链路层成功传输的基础上。

在U3当中,这一层看到的已经是协议层传输了,比如NRDY,ACK,STALL等状态操作,还有Data Packet的IN,OUT数据包传输。

 

 

5. Device Framework

 

USB设备可以简单的分为三层,底层是传输和接收数据的总线接口,即为前面4个小节的内容。

 

中间层负责处理总线接口和各种类型终端的数据,即为这一章的内容。主要负责的有端点的传输类型(控制传输/中断传输/批量传输),最大的数据负载容量,数据包数量等等。还有一些对端点的描述(Get Descriptor)。

 

最上层为SCSI将通过总线传递过来的数据进行解析,然后实现指定功能,例如将鼠标设备传递的数据按照SCSI协议转换成指针的运动。

 

有一个常见的USB协议测试就是九章测试(Chapter9 Test),就是因为Device Framework这一章在协议文档里面是第九章,所以叫九章测试(我被困惑好几年)

 

到这里终于看到SCSI的影子了,实际上在USB协议文档里丝毫没有提及SCSI。所以理论上SCSI是可以建立在任何数据传输总线上的,是为了提供特定功能而规定的协议,下面开始介绍SCSI。

 

二、SCSI和BOT/UASP

1. SCSI

小型计算机系统接口(SCSI,Small Computer System Interface)是一种用于计算机及其周边设备之间(硬盘软驱光驱打印机扫描仪等)系统级接口的独立处理器标准。

 

从上面的内容可以看出,SCSI并不是跟USB绑定的协议,任何在Host上数据总线传输的数据,都可以通过SCSI协议来实现指定功能。比如鼠标的数据先按照SCSI协议编码,经过USB传到电脑,电脑通过SCSI协议解析出鼠标进行的操作,反馈到指针。同样鼠标也可以通过PS/2接口传输数据,也是使用SCSI进行解析,USB和PS/2在通讯当中起到的只是数据桥梁的作用。

 

SCSI协议就不在这里介绍了,有兴趣进一步了解的可以参考文档 SCSI Commands Reference Manual--SEAGATE

 

继续再说一下比较重要但却经常被忽略的,被夹在SCSI和USB中间的BOT和UASP。

 

2. BOT

BOT全称是Bulk-Only Transpot,指的是整个传输过程只使用USB Device Framework的批量传输(Bulk Transers),另外跟批量传输对应的还有控制传输(Control Transfers),中断传输(Interrupt Transfers)和同步传输(Isochronous Transfers)。不同模式的传输是不同设备所使用的,不过都会在上盘枚举阶段使用控制传输。例如存储设备,使用的都是批量传输。鼠标、键盘等数据量小但是传输频繁的使用的是中断传输。VCD,DVD光驱等需要大量且要求及时性的设备使用的是同步传输。关于不同类型传输的特点和说明,网上有很多更详细的介绍,这里就不细说了。

BOT是基于USB数据包传输的基础上,为了配合SCSI协议,专门为大容量存储设备量身打造,在USB和SCSI中间又添加了一层协议(某软件大佬曾说过没有什么结构是分层解决不了的。。),关于BOT的的协议文档是usbmassbulk_10

 

 

高度概括一下BOT的内容就是:

1、一次传输由CBW开始,到CSW结束,可以有或者没有DATA阶段。

2、USB在刚上盘的阶段会进行控制传输,给SCSI获取一些信息,其中包括判断是否为BOT模式。

 

3. UASP

后来随着科技的发展和进步,其他各类传输都在突飞猛进,此时BOT逐渐达到性能瓶颈,弱点渐渐出现了:

1、一条命令必须从CBW开始到CSW结束后,才能开始下一条命令的传输。

2、没有类似Trim等公有命令。

...

...

 

后来起不好名字的USB-IF组织为了能够针对发挥USB3.0 5Gbps接口的总线利用率,推出了基于针对SCSI进行特殊优化的UASP协议。

UASP全称USB Attached SCSI Protocol,从名字就能可以看出其针对性。UASP相比BOT最大的改变就是命令可以并行的发送,类似SATA的NCQ功能。另外支持UASP的Host都使用了单独的控制芯片,不会消耗CPU资源。关于UASP相关的协议文档是 USB Attached SCSI -2

尽管从BOT换到了UASP,但是SCSI协议的操作还是基本保持一致的,除了多了几个公有命令要处理。

最后总结一下就是,最底层数据传输使用的USB,功能实现使用的SCSI,为了使USB和SCSI能衔接在一起,添加了BOT和UASP,over

 

  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
USB是通用串行总线(Universal Serial Bus)的缩写,是一种用于在计算机和外部设备之间传输数据的通信协议。SCSI是小型计算机系统接口(Small Computer System Interface)的缩写,是一种接口标准,用于在计算机和外部设备之间进行数据传输。 USB SCSI协议是指在USB接口上使用SCSI协议进行数据传输的一种方式。USB SCSI协议可用于连接和传输数据至SCSI设备,如硬盘驱动器、打印机、光驱等。通过使用USB SCSI协议,这些设备可以通过USB接口和计算机进行通信和传输数据。 USB SCSI协议通过将SCSI命令封装为USB传输协议包来实现数据传输。通过基于USB传输的SCSI命令,计算机可以向外部设备发送读取、写入、控制等指令,而外部设备则按照这些指令进行相应的操作并返回结果。这样,计算机和外部设备之间就可以完成数据的传输和操作。 使用USB SCSI协议的好处包括了在USB接口上与SCSI设备进行通信的便捷性、灵活性和可扩展性。USB接口被广泛应用于各类计算机和设备上,因此使用USB SCSI协议可以实现与各种SCSI设备的连接和数据传输,不再需要专门的SCSI接口。此外,USB接口的热插拔特性和高速传输能力也为外部设备的使用和数据传输提供了方便。 总之,USB SCSI协议是一种在USB接口上实现SCSI协议的方式,可以实现计算机与SCSI设备之间的通信和数据传输。USB SCSI协议通过简化设备连接和数据传输,提高了设备的使用便捷性和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值