我正在为USB设备开发CDC驱动程序,我偶然发现了一些问题。 我在Windows端使用的驱动程序使用Clear endpoint Feature作为某种flish机制或正确获取数据。这给我带来了很多因素,因为我无法让它发挥作用。我认为数据切换不一致,我错过了一些重要的数据传输,即使没有因为清除数据切换错误而得到相关的中断。 如USB标准所述,我在设置接口和清除功能时将数据切换为0。 我应该这样做的时候还有更多的情况吗?或者是否有简单的错误处理方法来处理无效数据切换。

感谢您的回复。我有USB分析仪,但我现在对我没有好处。从我可以设法收集,我认为正在发生。我在相应端点的清除功能(应该这样做)之后在hardvare中设置数据切换位。发送一些数据,它在PC上被收集。我知道这种形式的USB分析仪,我用端口监视器跟踪我的Vcom驱动程序。 然后我等待一些数据,因为一切都已配置(设备枚举等),初始问题是awsered但是下一个不是,在明确的端点功能之后,PC端再次提出问题。这应该触发相应端点的UBS中断,但它不会发生,在一段时间之后有一个明确的端点功能和相同的包,并且它一次又一次得到响应,通信协议上有静音。我计算了所请求的转移与丢失中断的比例,并且比率正好是2:1所以我认为数据切换在一半的时间内设置错误,但是如果我每次获得清晰的端点功能时设置数据切换位,怎么会发生这种情况。

我希望我能清楚地说明这个问题,因为哈维尔方面我认为唯一令人讨厌的事情就是我正在设定的位置。它指出“向该位写入1以将端点数据重置为0”。 好吧,我认为(希望)我解决了Clear端点的特征,其他错误是由其他事情引起的,累积问题很难捕捉到。


好的,我前一段时间已经解决了这个问题,现在我甚至不记得原因是什么,但通常情况是 - 这是别的。每个与anwser相关的人都要感谢。

有帮助吗?

解决方案

请注意,在某些版本的usbser.sys上,在传输64字节的精确倍数后,Windows无法正确刷新管道。我不清楚你的问题是否是你所看到的行为,但USB分析仪应该可以帮助你确定是否是这种情况。如果您使用的是XP SP2,请升级到SP3。

其他提示

我建议使用 usb snoopy (软件usb分析器)以了解你是什么做错了。如果你有任何预算,你最好有硬件usb分析仪,如 Lecroy Ellisys 。或者获得一个商业CDC驱动程序,有很多可用的谷歌cdc驱动程序。 您的问题描述非常笼统,可以直接解决。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top