lq519
驱动牛犊
驱动牛犊
  • 注册日期2001-12-09
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2259回复:8

usb的传输是基于1ms的帧的,bulk传输是如何往usb总线上放数的呢?

楼主#
更多 发布于:2003-05-27 10:00
usb的传输是基于1ms的帧的,bulk传输是如何往usb总线上放数的呢?就拿一个端点来说,一次bulk传输最多能放64字节,一毫秒的帧能够放多少64字节呢?可以多放吗?放多个64字节,是如何往一毫秒的帧上放的呢?做u盘的高手们,他们的速度确实可以很高,可以上数量级为M的级别,他们如何做的呢?

最新喜欢:

idlemanidlema...
lq519
Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-27 10:27
  兄弟你说的是usb1.1么?1.1对发送方要求必须最小延迟1ms,就是你没ms只能发送一次,最多64字节,我是这么理解的。
Tomorrow Never Die
lq519
驱动牛犊
驱动牛犊
  • 注册日期2001-12-09
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-27 10:35
 兄弟你说的是usb1.1么?1.1对发送方要求必须最小延迟1ms,就是你没ms只能发送一次,最多64字节,我是这么理解的。


您说的概念我清楚,您好像没有回答我的问题,您是来拣分的吗?
lq519
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-27 10:47
对于1.1协议,每1ms的帧里面最多能放19个64B、33个32B、51个16B、71个8B的BULK数据包,极限速率是1.216MB/s!协议里有说明,在5.8.4节
Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-27 10:53
[quote]  兄弟你说的是usb1.1么?1.1对发送方要求必须最小延迟1ms,就是你没ms只能发送一次,最多64字节,我是这么理解的。


您说的概念我清楚,您好像没有回答我的问题,您是来拣分的吗? [/quote]
这个帖子我要不回就真成捡分的了,我只是想探讨一下吗。usb1.1最快也就这个速度了,我现在每帧延迟1ms还总是丢帧呢。
Tomorrow Never Die
lq519
驱动牛犊
驱动牛犊
  • 注册日期2001-12-09
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-27 10:59
对于1.1协议,每1ms的帧里面最多能放19个64B、33个32B、51个16B、71个8B的BULK数据包,极限速率是1.216MB/s!协议里有说明,在5.8.4节


放多个64字节,是如何往一毫秒的帧上放的呢?您能告诉我吗?
lq519
lq519
驱动牛犊
驱动牛犊
  • 注册日期2001-12-09
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-27 11:09
[quote][quote]  兄弟你说的是usb1.1么?1.1对发送方要求必须最小延迟1ms,就是你没ms只能发送一次,最多64字节,我是这么理解的。


您说的概念我清楚,您好像没有回答我的问题,您是来拣分的吗? [/quote]
这个帖子我要不回就真成捡分的了,我只是想探讨一下吗。usb1.1最快也就这个速度了,我现在每帧延迟1ms还总是丢帧呢。 [/quote]

“usb1.1最快也就这个速度了“您指的是多少,计算公式,如何实现的?

您的问题:“我现在每帧延迟1ms还总是丢帧呢”。丢帧?是nak应答吧?数据并没丢吧?
lq519
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-27 11:59
哎,你还真是打破沙锅问到底呀,传输过程是这样的:
当主机方请求一个大于64字节的数据传输时,底层驱动会把这批数据分成一个个的64字节的数据包,然后先发送第一个64字节数据包,当设备成功接收后会发送ack给主机,然后主机接着会发送out token到设备查询设备方的out端点是后为空,如果设备已经把数据读出,那么主机就会发第二个64字节数据包给设备,否则就持续发送out token给设备。

简单来说就是: 主机64字节数据―〉设备接收到―〉设备处理数据―〉主机查询out端点为空?―〉为空,则发送下一个64字节数据―〉不为空,继续查询……

上述的过程有可能是在一个1ms的帧里面发生的,也可能是多个1ms的帧里发生,这就看你mcu的处理速度是否足够快了,一个1ms的帧里面最多能承载的数据负荷是19个64字节,如果想理论上达到这个速度,那就只好设备一旦发现out端点有数据,就强制清空端点,这样会不断的收到out包,速度因此能达到最快,不过这种情况没有任何实际意义!
kilroy_guo
驱动大牛
驱动大牛
  • 注册日期2002-10-29
  • 最后登录2005-11-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-27 14:21
哎,你还真是打破沙锅问到底呀,传输过程是这样的:
当主机方请求一个大于64字节的数据传输时,底层驱动会把这批数据分成一个个的64字节的数据包,然后先发送第一个64字节数据包,当设备成功接收后会发送ack给主机,然后主机接着会发送out token到设备查询设备方的out端点是后为空,如果设备已经把数据读出,那么主机就会发第二个64字节数据包给设备,否则就持续发送out token给设备。

简单来说就是: 主机64字节数据―〉设备接收到―〉设备处理数据―〉主机查询out端点为空?―〉为空,则发送下一个64字节数据―〉不为空,继续查询……

上述的过程有可能是在一个1ms的帧里面发生的,也可能是多个1ms的帧里发生,这就看你mcu的处理速度是否足够快了,一个1ms的帧里面最多能承载的数据负荷是19个64字节,如果想理论上达到这个速度,那就只好设备一旦发现out端点有数据,就强制清空端点,这样会不断的收到out包,速度因此能达到最快,不过这种情况没有任何实际意义!


赫赫,补充一下1.1下数据负载是1500Byte/ms,2.0下是60000Bytes/ms也就是7500Byte/125us,这是最大数据负载了。bulk要等空闲带宽,速度就很难说了,1.1下面假设1500byte/ms全用在bulk,那么64字节包在1ms有最大1500/(64字节数据+n控制字节) = 19个包。这下大家明白了么?

二姑家的猫想......
游客

返回顶部