2009-03-11 7 views
0

Ich habe einen Gerätetreiber für ein USB 1.1-Gerät auf Windows 2000 und höher mit Windows Driver Model (WDM) entwickelt.Wie kann die Tx-Leistung im USB-Gerätetreiber verbessert werden?

Mein Problem ist, die ziemlich schlechte Leistung Tx wenn 64Byte Bulk-Transfer verwendet wird. Abhängig vom verwendeten USB Host Controller beträgt der maximale Paketdurchsatz entweder 1000 Pakete (UHCI) oder 2000 Pakete (OHCI) pro Sekunde. Ich habe einen ähnlichen Treiber auf Linux Kernel 2.6 mit rund 5000 Paketen pro Sekunde entwickelt.

Der Linux-Treiber verwendet, um 10 asynchrone Übertragung großer Datenmengen auf, während der Windows-Treiber 1 synchrone Übertragung großer Datenmengen verwendet. Vergleicht man das also, ist die Performance zwar schlecht, aber ich habe es auch schon mit asynchronen Massentransfers ohne Erfolg versucht (keine Leistungssteigerung).

Hat jemand ein paar Tipps und Tricks hat, wie die Leistung auf Windows steigern?

Antwort

1

Ich habe es jetzt geschafft, das Senden auf etwa 6,6 k Nachrichten/s zu beschleunigen. Die Lösung war ziemlich einfach, ich habe gerade den gleichen Mechanismus wie im Linux-Treiber implementiert.

So jetzt bin ich der Planung auf einmal 20 URBs oben, auf was soll ich sagen, es hat funktioniert.

0

Welche Art von Durchsatz erhalten Sie? USB 1.1 ist begrenzt auf etwa 1,5 Mbit/s

Es könnte eine Einschränkung, die Sie mit leben müssen werden, die eine Sache, müssen Sie nie tun, ist das System für Ressourcen zu verhungern. Ich habe so viele schlechte Treiberimplementierungen gesehen, bei denen der Treiber die Systemressourcen in Beschlag nimmt, ohne seine eigene Leistung zu steigern.

Meine Vermutung ist, dass Sie die falschen API-Aufrufe verwenden, haben Sie an den USB-Proben in dem Win32 DDK geschaut?

+0

Ist USB 1.1 nicht theoretisch begrenzt bei 12MBit/s? Unter Linux erreichen wir mit dem gleichen Gerät bis zu 5 mal mehr Pakete/s. Die Paketgröße ist nicht 64 Byte (maximal), aber das ist für Linux dasselbe. Ich werde mir die Beispiele ansehen. Vielen Dank. – Seika

Verwandte Themen