[数据传输] usb 协议 关于bulk事务 per uframe ,求教

[复制链接]
1593|2
 楼主| kuankuan02 发表于 2016-1-12 10:32 | 显示全部楼层 |阅读模式
FRAM, USB, ST, os, vi
FPGA阶段,板端是device,host用linux PC机,使用usblib(0.1)进行bulk write操作
USB2.0 high speed 下单纯的测bulk ep
读写通讯都是可以的,我循环bulk out 大量的数据(比如10M)测试其效率

我的问题是通过advise查看中间数据协议,每个uframe最多只做一次bulk事务(Max Package 512),
有时ACK回来后还可以有100us idle,host为什么不在同一个uframe out第二次呢?
延伸问题:Host 是如何在uframe里的剩余时间里安排 bulk 事务的?可以为多个否?

(主机PC为了减少其他带宽占用,就只接了这一个USB 设备,简化先不考虑其他事务)
lin704932121 发表于 2016-1-18 12:12 来自手机 | 显示全部楼层
100us内够不够再传输一次512字节所需时间,不够的话是不行的
 楼主| kuankuan02 发表于 2016-1-18 18:06 | 显示全部楼层
后来我在我使用的USB 控制器的OTG HCD代码部分看到,它是定义了一个变量:
unsigned multi_count:2;// Number of periodic transactions per (micro)frame
对于Bulk事务,该值始终为1,表示pre uframe 只会做一次bulk事务。
虽然各家的USB 控制器不同,但HCD HC层的实现应该是相似的

另外,我有看到剩余100+us ,也不会做bulk事务的事实,至少我用的linux PC如此

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部