本文主要是介绍浅谈 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
登录大大通,了解更多详情,解锁1500+完整应用方案,更有大联大700+FAE在线答疑解惑!
这篇关于浅谈 USB Bulk 深入浅出 (3) - USB Bulk 装置传输的注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!