2009-06-19 57 views
0

我正在开发USB设备的CDC驱动程序,我偶然发现了一些问题。 我在Windows上使用的驱动程序使用Clear端点Feature作为某种flish机制或获取正确的数据。这使我产生了很多的混乱,因为我无法正常工作。我认为数据切换不同意,我错过了一些重要的数据传输,甚至由于数据切换不清而没有得到与该端点相关的中断。 正如USB标准中指出的那样,我将设置界面上的数据切换复位为0并清除了功能。 有更多的情况应该这样做吗?或者有错误处理无效数据切换的简单方法。USB清除端点功能

感谢您的支持。我有usb分析仪,但我现在对我没有任何好处。从我能设法收集的东西,我认为正在发生。在清除功能之后,我在hardvare中设置了datatoggle bit(因为它应该完成),以便为端点应对。发送一些数据,它在PC上被收回。我知道这种形式的USB分析仪,我用端口监视器追踪了我的Vcom驱动程序。 然后我等待一些数据,因为一切都配置好了(设备枚举等等),但最初的问题是可能的,但下一个不是,在清晰的端点成熟后PC端再次提出问题。这应该会引发UBS中断,以防止端点发生中断,但这种情况一段时间后仍然没有发生,而且端口功能清晰且包装相同,并且它一次又一次得到响应,通信协议中会出现沉默。我计算了所请求的传输与丢失中断的比率正好是2:1,所以我认为数据切换的时间设置错了一半,但是如果每次获得清晰的端点特性时都设置了数据切换位,会怎么样呢?

我希望我清楚地说明了这个问题,对于harvare方面,我认为唯一相关的东西就是我所设定的一点。它表示“写1到该位将端点数据切换到0”。 好吧,我认为(希望)我解决了清除端点的成熟,其他错误是由其他事情引起的,累积问题很难赶上。


好吧,我解决了该问题,前一段时间,现在我甚至不remeber究竟是什么原因,但作为后容易是 - 这是别的东西。每个人都与安瑟尔结缘。

回答

1

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

+0

Courious,但我的情况更简单,错误是明确的端点成熟和缺乏处理它,其次,我有我的USB堆栈内处理任务的问题,所以看到奇怪的行为。 – CrazyChris 2009-06-22 15:59:50

1

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