打印

vista,win7下USB底层框架驱动批量传输512K后停顿

[复制链接]
2293|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duanmu012345|  楼主 | 2010-4-2 10:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
微软为Vista系统的ehci驱动做了优化,其中一个优化是这样的:对于bulk管道,如果驱动一次请求比较大的数据传输的时候,系统驱动每收到512k的数据之后会有250纳秒延迟,也就是会有2个微帧不去向设备读数据。
对于这个现象,我的分析(不一定正确)是:这样有可能导致设备认为主机不再需要后面的数据了,因此如果设备一帧的数据大于512k,设备会认为系统驱动只请求512k,后面的会丢弃。而主机延迟了250纳秒之后再来请求却因为设备已经丢弃了数据而读不到数据了。
为此我想请教对固件比较熟悉的网友,是否可以让设备对250纳秒的延迟进行检测而能够继续把512k之后的数据传输上去呢?
如果这个方法不行的话,那也许以后的高分辨率的摄像头将只能采用isochronous的方式来进行传输了。
请问在win7下有什么方式去避免批量传输512K后的250纳秒延时?谢谢

相关帖子

沙发
宇容创行| | 2010-4-2 13:05 | 只看该作者
设备会认为系统驱动只请求512k?

固件不会这样判断的吧?端点每次只能处理一小块,512k实际上是分多次请求的

使用特权

评论回复
板凳
duanmu012345|  楼主 | 2010-4-2 16:10 | 只看该作者
本帖最后由 duanmu012345 于 2010-4-2 16:13 编辑

2# 宇容创行

你还没明白我的意思,在WINDOWS7框架下,要是批量传出一次请求的URB大于512K的情况下,系统USB框架驱动 会停顿一段时间,因为是in包发送读取设备端数据,这段时间会导致没有从设备端读取数据,而设备端是实时往上传数据的,所以导致数据流断掉。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

12

帖子

1

粉丝