2009-03-11 6 views
0

J'ai développé un pilote de périphérique pour un périphérique USB 1.1 sur Windows 2000 et versions ultérieures avec Windows Driver Model (WDM).Comment améliorer la performance Tx dans le pilote de périphérique USB?

Mon problème est la mauvaise performance Tx lors de l'utilisation de transferts groupés de 64 octets. En fonction du contrôleur hôte USB utilisé, le débit maximum des paquets est de 1 000 paquets (UHCI) ou de 2 000 paquets (OHCI) par seconde. J'ai développé un pilote similaire sur Linux Kernel 2.6 avec environ 5000 paquets par seconde.

Le pilote Linux utilise jusqu'à 10 transferts groupés asynchrones alors que le pilote Windows utilise 1 transfert groupé synchrone. Donc comparer cela rend clair quand la performance est si mauvaise, mais j'ai déjà essayé avec des transferts de masse asynchrones sans succès (pas de gain de performance).

Est-ce que quelqu'un a quelques conseils et astuces pour améliorer les performances sur Windows?

Répondre

1

Je l'ai maintenant géré pour accélérer l'envoi à environ 6,6 k messages/s. La solution était assez simple, je viens de mettre en place le même mécanisme que dans le pilote Linux.

Alors maintenant, je planifie jusqu'à 20 URB à la fois, à quoi devrais-je dire, cela a fonctionné.

0

Quel genre de débit obtenez-vous? USB 1.1 est limité à environ 1,5 Mbit/s

Il peut être une limite que vous devrez vivre avec, la seule chose que vous ne devez jamais faire est de priver le système de ressources. J'ai vu tant de mises en œuvre de pilotes pauvres où le conducteur accapare les ressources du système en panne totale pour augmenter sa propre performance.

Je suppose que vous utilisez les mauvais appels API, avez-vous regardé les échantillons USB dans le DDK Win32?

+0

L'USB 1.1 n'est-il pas théoriquement limité à 12 Mo/s? Sous Linux, nous atteignons avec le même appareil jusqu'à 5 fois plus de paquets/s. La taille du paquet n'est pas 64 octets (maximum) mais c'est la même chose pour Linux. Je vais jeter un coup d'oeil aux exemples. Merci. – Seika

Questions connexes