如何提高USB设备驱动程序的Tx性能?

时间:2009-03-11 06:49:10

标签: windows usb device-driver

我使用Windows驱动程序模型(WDM)为Windows 2000及更高版本开发了USB 1.1设备的设备驱动程序。

我的问题是使用64byte批量传输时Tx性能非常糟糕。根据使用的USB主机控制器,最大数据包吞吐量为每秒1000个数据包(UHCI)或2000个数据包(OHCI)。我在Linux Kernel 2.6上开发了一个类似的驱动程序,每秒大约有5000个数据包。

Linux驱动程序使用多达10个异步批量传输,而Windows驱动程序使用1个同步批量传输。因此,比较这一点可以清楚地表明性能如此糟糕,但我已经尝试过异步批量传输,但没有成功(没有性能提升)。

有没有人提供一些提示和技巧来提高Windows的性能?

2 个答案:

答案 0 :(得分:1)

我现在已经设法加快发送到大约6.6k消息/秒。解决方案非常简单,我刚刚实现了与Linux驱动程序相同的机制。

所以现在我一次安排多达20个URB,我应该说什么,它有效。

答案 1 :(得分:0)

您获得了什么样的吞吐量? USB 1.1限制在大约1.5 Mbit / s

这可能是您必须忍受的限制,您必须做的一件事就是让系统匮乏资源。我见过很多糟糕的驱动程序实现,驱动程序在完全无法提高自身性能的情况下占用系统资源。

我的猜测是你使用了错误的API调用,你看过Win32 DDK中的USB样本吗?