2.1.1.2. USB MSC Bulk-Only (BBB) Transport

如上所述,Bulk-only是USB设备端,此处的U盘和USB Host端,即普通PC,之间信息交换的协议。

Bulk Only Transport,也被简称为BOT。

2.1.1.2.1. 为何USB MSC中Bulk-only Transport被叫做 BBB

USB MSC中的Bulk-Only 常被叫做BBB,是相对于前面所说的CBI来说的。

看起来,USB MSC的CBI,是Control/Bulk/Interrupt的简写,但是其具体含义是:

  1. Control

    Control端点用于,除了传送标准的USB请求之外,还用于通过Class-specific的请求,将命令块(command block)传给设备;即Control端点传送命令块

  2. Bulk

    Bulk In和Bulk Out端点用于在主机(Host)和设备(Device)之间数据的传输。即,Bulk用于传送数据

  3. Interrupt

    Interrupt端点用于(设备向主机)通知命令完成。即Interrupt用于传送状态信息

因此,上面的USB MSC的Control/Bulk/Interrupt,才被简称为CBI。

和CBI中的用三种不同的端点来传送三种类型的信息,而不同的是,Bulk-only传送这些全部的信息,都之用Bulk端点。

即用Bulk端点来传送命令块,数据,状态,因此,才类似于Control/Bulk/Interrupt被简称为CBI一样,而Bulk/Bulk/Bulk被简称为BBB。

【总结】

USB MSC传输协议分CBI和BOT,而BOT又称为BBB。

2.1.1.2.2. 为何已经有了CBI,又再弄出个BBB

既然,对于USB MSC设备来说,USB设备和USB主机之间的通信,已经定义了一个CBI规范,那么为何还要再新定义一个Bulk-only(BBB)呢?

我的理解是,那是因为,最开始USB协议定义的时候,那时候市场上的Floppy Disk还是用的很多的。

所以针对Floppy设备特点,分别定义了多个端点来传输不同的信息,即Control端点传命令块,Bulk传数据,Interrupt传状态信息,

而后来计算机行业的发展了,Floppy类的设置很少用了,存储数据的话,多数开始用Flash Memory了,再加上通过合理规划,可以用同一种端点,即Bulk端点,传输上述三种信息,即命令块,数据,状态,

因此,只需要物理上实现一个Bulk端点,节省掉了其他两个端点:Control端点和Interrupt端点,达到了物理上实现起来方便和节省资源,而达到同样的信息传输的目的。

此部分理解,有待进一步考证。

【总结】

USB MSC Bulk-Only (BBB) 协议,是我们要重点关注的对象。因为我们的U盘和USB主机(PC端)直接信息交互,主要是用此协议。