如上所述,Bulk-only是USB设备端,此处的U盘和USB Host端,即普通PC,之间信息交换的协议。
Bulk Only Transport,也被简称为BOT。
USB MSC中的Bulk-Only 常被叫做BBB,是相对于前面所说的CBI来说的。
看起来,USB MSC的CBI,是Control/Bulk/Interrupt的简写,但是其具体含义是:
- Control
Control端点用于,除了传送标准的USB请求之外,还用于通过Class-specific的请求,将命令块(command block)传给设备;即Control端点传送命令块
- Bulk
Bulk In和Bulk Out端点用于在主机(Host)和设备(Device)之间数据的传输。即,Bulk用于传送数据
- 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。
既然,对于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端)直接信息交互,主要是用此协议。