1 USB Bulk 是什么
USB 是即插即用使用差动信号的装置界面,是以 端点 ( Endpoint ),做为传输装置的输出入端,透过不同的端点 ( Endpoint ) 和模式,来进行与装置的沟通,USB Bulk 就是USB 四种传输模式之一的批量资料传输 ( Bulk ) 的端点传输
1.1 传输方块图
USB 传输方块图,如‘图1.1.1’( 注1 ), 其中 IRP是 I/O Request Packet ,由图所示Bulk 传输是使用 1个或多个的 IN / OUT 资料传输 (Transaction ),一个 USB 的资料传输通常会有 3 个阶段 Token , Data , handshake的封包
2 USB Bulk 传输的优缺点总结
因为目前没有写 driver 的资源 ,所以自已写或请人写 driver 的这个方式,目前是不考虑的, 所以只能考虑USB to com port 的 USBCDC ,或是需要 File system 的 mass storage ,一般称为USB 随身碟 ( U 盘 )
使用 USB Mass storage的缺点是 : 因为不用写 driver ,是直接使用 windows driver,所以整体的行为会被 windows driver 受限,如传输的速度,资料错误重送的机制,还会受到系统整体是否忙碌,而影响到传输,反正会影响到一般 USB 硬盘传输行为的,在模拟的 USB Mass storage 都会遇到。
若是可以使用 Microsoft OS descriptor强制指定 driver 就可以跳过需要自行撰写的过程,也是另一种特别的方法,但此方式,是装置第一次插上电脑时,会将相关的 info 注册,若是第一次没有成功,则此装置会在同一台电脑上无法使用,除非将相关的注册表清除
最后做出来的Bulk传输,有两个大问题 :
(1) 就是有时候 电脑端 会直接传送空的 package,虽然是无效且会再重传资料,但程式上就必须要多了一些判断和整合的机制才行,但是有机会是一开始的档头就是失败的 ( 档头也有可能一开始传送失败,之后再重传 ),若是使用 MSD 他是存到相对的 Flash 位置,所以必须等到所有封包含重传完的封包都存到相对的 Flash 时,整图档封包资料才会是完整的,这时抓图当然没问题,但若是一边传输图档,又一边要点图的话,就会有很大的问题,若是有很大的 RAM ,或是真的存到 Flash 内,当然可以全部传输完成之后再传图到 Panel 端,可是若是真的先存到 Flash , Flash 的擦写速度也要算在传输的时间内,但若是没档头,图档的偏移量就不知道,就要将所有的资料先存下来,最后才把图档的 Row data 分离出来,做传输至 Panel 或是转换格式后再传输至 Panel,其中转换格式或是搬移大量记忆体都会花费 MCU 大量的处理时间,这点需要注意(2) 在封包和封包之间的间隔时间,虽然 Firmware 可设定最小间隔时间,但主要的传输端是 电脑端的 AP 程式和 driver 控制的,所以说一开始 AP 程式和 driver 未借入或是没设定 timeout 值时,会发现封包的间隔时间非常的大,与 AP 程式人员讨论之后,使用背景模式来一直连续传送图片,效果也是只有好一些,主要还是会受限于 windows driver 这里。但若是 API 程式,设定的间隔时间比实际上封包传输的时间还短时,若传输的档名都是同一个,而相对位置也相同的话,有可能封包会被后来的盖过去也不一定。
使用 NXP RT500 系列的 EVK 做的 USB Bulk 来传输图片,并且将图片资料直接点 RGB888/RGB565 的Panel,实验中发现若是把 PC 端 USB 背景传输间隔时间放的很小,则 MCU 端有机会造成资料来不及收完就被复盖的现象,另外会发现到, 24bits 的处理,要比 16 bits 处理上,还要多出 3/2 左右的时间,但画质上是有差一些,但为了速度考量最后还是使用 RGB565, 并且当初有尝试了一下格式转换,发现转换的时间,还远大于传输的时间,所以格式转换的部分不太适合放在 MCU 做了,最好要格式转换的话是放在 PC 端执行好后再将要点图的 Row data 传给 MCU
后续会在博文视频区内,放上请 WPI 同事帮忙撰写 for Window 的 GUI ,来做一个 Bulk 传输,会在视频中看到若是 USB 传输间隔时间设的太小的话,有时候会出现来不及传输完图档的现象
3 参考资料
注1 : 作者: USB ORG ( Compaq ,Hewlett-Packard ,Intel ,Lucent,Microsoft,NEC,Philips );
出处 : https://www.usb.org/document-library/usb-20-specification
评论