0

Windows 2000 以降で Windows Driver Model (WDM) を使用して、USB 1.1 デバイス用のデバイス ドライバーを開発しました。

私の問題は、64 バイトのバルク転送を使用した場合の Tx パフォーマンスがかなり悪いことです。使用する USB ホスト コントローラに応じて、最大パケット スループットは 1 秒あたり 1000 パケット (UHCI) または 2000 パケット (OHCI) です。Linux Kernel 2.6 で、1 秒あたり約 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 に制限されています

それはあなたが耐えなければならない制限かもしれません.1つだけ絶対にやってはいけないことは、システムのリソースを枯渇させることです. 私は、ドライバーが自身のパフォーマンスを向上させるために完全に失敗してシステム リソースを占有している、非常に多くの不適切なドライバーの実装を見てきました。

私の推測では、間違った API 呼び出しを使用していると思われます。Win32 DDK の USB サンプルを見ましたか?

于 2009-03-11T06:55:12.117 に答える