首页 文章

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

提问于
浏览
0

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

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

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

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

  • 这表明设备固件仍然响应 . 什么可能导致HCD停止发送IN令牌帧?

  • 如何从这种部分失败中恢复?

有关如何进一步调试的任何建议?

提前致谢

谢谢

杰夫Facemire

1 回答

  • 0

    我们已经找到了问题 .

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

相关问题