【阿福的随笔】浅谈 USB Bulk 深入浅出 (3) - USB Bulk 装置传输的注意事项

1 USB Bulk 是什么

USB 是即插即用使用差动信号的装置界面,是以 端点 ( Endpoint ),做为传输装置的输出入端,透过不同的端点 ( Endpoint ) 和模式,来进行与装置的沟通,USB Bulk 就是USB 四种传输模式之一的批量资料传输 ( Bulk ) 的端点传输 ( 注1 )

2 USB Bulk 装置传输的注意事项

如果不想自已写 Windows 的 driver ,可以使用 目前 Windows 已有内建 driver 的 BULK 装置,例如 USB to com port 的  USBCDC ,或是需要 File system 的 Mass storage ,一般称为USB 随身碟 ( U 盘 )

使用 USB Mass storage ,则 Device  就会形成一个虚拟的 USB Disk ,在传输档案的过程,就是从电脑端利用此 USB Disk 与 Device 的 USB Endpoint 来做 Bulk 传输使用,但是 此种方式有可能传送或接收时,资料来不及给或 check sum 不对时,会将此次 sector 在传完全部资料后再重新传送一次,且会在最后的 FAT 表资料之前。可以从 每次的 offset 来做判断,是否是重复送的资料,如果是要以后来的资料为准。

若是没有重传的流程来说,是先传送  FAT 表内容,档头,档案资料,档尾,再传送 FAT 表内容,其中 档头,档案资料,档尾 的偏移值是连续的。 

若是以有重传的流程来说,是先传送  FAT 表内容,档头,档案资料,档尾,再重传所需的资料 ( 可能是档头,档案资料,档尾 ) ,再传送 FAT表内容,从 debug message 来看 ,由偏移值 0x0b 的档头开始有认到 BM 开头的 BMP file至偏移值 0xab 的最后资料传完之后,接着再将资料有问题 ( 都传 0 ,来不及给资料 ),或是 电脑认为没有传递成功 ,会再一次重新传输,从例子上偏移值是 0x4b ,0x5b,0x6b,0x7b 有 4 个段落都需要重新传输。 ( 如图 2.1~2.2 )

 
图2.1
 
图2.2


由一些测试之后发现,使用 USB Mass storage 的缺点是 : 因为不用写 driver ,是直接使用 windows driver,所以整体的行为会被 Windows driver 受限,如传输的速度,资料错误重送的机制,还会受到系统整体是否忙碌,而影响到传输,反正会影响到一般 USB 硬盘传输行为的,在模拟的 USB Mass storage 都会遇到。

3 参考资料

注1 : 作者: USB ORG ( Compaq ,Hewlett-Packard ,Intel ,Lucent,Microsoft,NEC,Philips );
  出处 :
https://www.usb.org/document-library/usb-20-specification

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论