【发布时间】:2009-06-19 14:57:39
【问题描述】:
我正在为 USB 设备开发 CDC 驱动程序,但偶然发现了一些问题。 我在 Windows 端使用的驱动程序使用 Clear endpoint Feature 作为某种 flash 机制或正确获取数据。这给我带来了很多麻烦,因为我无法让它工作。我认为数据切换不同意,并且我错过了一些重要的数据传输,甚至由于清除数据切换错误而没有获得与该端点相关的中断。 如 USB 标准中所指出的,我在设置接口和清除功能时将数据切换重置为 0。 当我应该这样做时,还有更多情况吗?或者是否有简单的错误处理无效数据切换的方法。
感谢您的回复。我有 USB 分析仪,但我现在对我没有任何好处。从我能设法收集到的东西来看,我认为正在发生。在清除功能(应该这样做)之后,我在硬件中为对应的端点设置了 datatoggle 位。发送一些数据,在 PC 上接收。我知道这种形式的 USB 分析器,我用端口监视器跟踪了我的 Vcom 驱动程序。 然后我等待一些数据,因为一切都已配置(设备枚举等),最初的问题是 anwsered 但下一个问题不是,在明确端点故障后,PC 端再次提出问题。这应该会触发对应端点的 UBS 中断,但它并没有发生,一段时间后再次出现明确的端点功能和相同的包,并且它一次又一次地得到响应,通信协议保持沉默。我计算了请求的传输与丢失的中断,比率正好是 2:1,所以我认为数据切换设置错误的时间有一半,但是如果我每次获得明确的端点功能时都设置数据切换位,这怎么会发生。
我希望我清楚地说明了这个问题,对于哈佛方面,我认为唯一值得关注的是我正在设置的位。它声明“向该位写入 1 以将端点数据切换重置为 0”。 好的,我认为(希望)我解决了 Clear endpoint fature,其他错误是由其他原因引起的,并且累积问题很难发现。
好的,我前段时间解决了这个问题,现在我什至不记得是什么原因了,但通常情况下是 - 这是另外一回事。感谢所有与 anwser 相关的人。
【问题讨论】: