0

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

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

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

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

4

2 回答 2

1

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

所以现在我一次最多可以安排 20 个 URB,我应该说,它起作用了。

于 2009-04-17T14:38:35.577 回答
0

你得到什么样的吞吐量?USB 1.1 被限制在大约 1.5 Mbit/s

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

我的猜测是您使用了错误的 API 调用,您查看过 Win32 DDK 中的 USB 示例吗?

于 2009-03-11T06:55:12.117 回答