我们正在为以太网网络设备开发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令牌的正常行为。
有关如何进一步调试的任何建议吗?
提前致谢
由于
Jeff Facemire
答案 0 :(得分:0)
我们已经找到了问题。
在初始化期间,缓冲区被提供给HCD驱动程序,以便在BULK IN端点上进行接收。当我们运行繁忙的流量时,我们遇到了一个条件,其中提交给HCD的所有缓冲区都返回给驱动程序,但没有返回HCD。由于没有缓冲区来接收该管道的数据,因此HCD驱动程序不发送任何IN令牌传输帧。