wince 6 USB - 批量传输问题(BULK IN管道上没有IN传输令牌帧)

时间:2014-01-28 18:29:48

标签: usb windows-ce bulk

我们正在为以太网网络设备开发WinCE 6.0 USB驱动程序。设备有1个控制,1个中断(IN)和4个Bulk端点(3 OUT和1 IN)。基本功能与驱动程序一起正常工作。

但是当我们运行大量流量(使用iperf)时,我们会发现一个问题是没有从BULK IN端点接收来自目标的任何数据。此时主机仍然可以通过Bulk OUT端点发送数据。

我们有一个USB分析仪来检查主机和设备之间的事务。我们从捕获中发现,当我们遇到这种情况时,主机已经停止在Bulk IN端点发送IN令牌帧,以读取数据。虽然它仍然能够通过Bulk OUT管道推送数据并从设备获得成功的ACK。

在我们遇到这种情况之前,我们会看到带有NAK的IN令牌帧(当设备没有数据要发送到主机时)或带有效数据的IN令牌的正常行为。

  1. 这表明设备固件仍然响应。什么可能导致HCD停止发送IN令牌帧?
  2. 如何从这种部分失败中恢复?
  3. 有关如何进一步调试的任何建议吗?

    提前致谢

    由于

    Jeff Facemire

1 个答案:

答案 0 :(得分:0)

我们已经找到了问题。

在初始化期间,缓冲区被提供给HCD驱动程序,以便在BULK IN端点上进行接收。当我们运行繁忙的流量时,我们遇到了一个条件,其中提交给HCD的所有缓冲区都返回给驱动程序,但没有返回HCD。由于没有缓冲区来接收该管道的数据,因此HCD驱动程序不发送任何IN令牌传输帧。