Auswirkung des USB Full-Speed-Treibers auf die Übertragungsgeschwindigkeit

Ich habe Probleme mit der USB-Kommunikation, die anscheinend mit dem Treiber zusammenhängen. Mein Setup beinhaltet ein eingebettetes Gerät, das als virtueller COM-Port (CDC/ACM) eingerichtet ist, mit dem ich über USB kommuniziere. Das Problem ist, dass die Datenraten auf einem bestimmten Computer sehr langsam sind. Ich habe das eingebettete Gerät auf verschiedenen Linux-Computern getestet und festgestellt, dass das Problem für diesen PC spezifisch ist (derjenige, auf den es ankommt).

Von der Ausgabe her dmesgist der einzige wahrnehmbare Unterschied der Treiber, der auf den verschiedenen Computern geladen wird. Der problematische PC verwendet uhci-hcd, während andere entweder ehci-hcd oder xhci-hcd verwenden. Da ehci auf dem langsamen PC verfügbar ist, habe ich versucht zu diktieren, welcher Treiber geladen wird, aber das scheint unter Linux leichter gesagt als getan zu sein. Andere haben vorgeschlagen, uhci-hcd auf die schwarze Liste zu setzen, kommen aber rmmodmit einem Fehler zurück, der besagt, dass das Modul eingebaut ist.

Das Betriebssystem auf dem PC wurde von einem 32-Bit-Ubuntu 12 auf Ubuntu 14.04 64-Bit aktualisiert (Prozessor ist 64-Bit). Wikipedia erwähnt, dass uhci nur 32-Bit-Speicheradressierung unterstützt, was einen teuren Bounce-Puffer erfordert, um mit einem 64-Bit-Betriebssystem zu funktionieren. Könnte dies der Grund für die langsamen Datenraten sein?

Der eingebettete Prozessor ( Infineon XMC4400 ) unterstützt Übertragungen mit voller Geschwindigkeit (12 Mbit/s), was meines Wissens USB 1.0 entspricht. Gehe ich richtig in der Annahme, dass bestimmte Treiber für USB 1 andere übertreffen?

Ich bin ein bisschen ein Hardware-Noob und würde mich über Ratschläge zur Lösung oder zum Verständnis des Problems freuen. Sollte ich versuchen, bestimmte Treiber für das Gerät zu erzwingen, und wenn ja, wie? Sollte ich zu einem 32-Bit-Betriebssystem zurückkehren oder bin ich vielleicht durch die Hardware eingeschränkt?

Das Motherboard auf dem PC ist ein Versalogic Mamba EBX-37.

Warum erwähnen Sie das Upgrade? Und warum haben Sie nicht auf eine aktuelle Kernel-Version aktualisiert?
Ich habe mich gefragt, ob das 64-Bit-Betriebssystem möglicherweise Probleme mit dem uhci-hcd-Treiber verursacht. Der Kernel wurde auf Version 3.13.0-86-generic aktualisiert.
Die Leistung hängt von den Details der Maschine ab; das musst du selbst testen. Und „aktuell“ bedeutet nicht „über zwei Jahre alt“.
Ursprünglich würde apt-get dist-upgrade es nicht weiter als 3.13.0-86 bringen. Ich habe es jetzt auf Version 3.19.0-59-generic aktualisiert. Einige der anderen Computer, die ich erfolgreich getestet habe, haben ältere Kernel als diesen.

Antworten (1)

Scheint, als ob meine Vermutung bezüglich des Fahrers richtig war. Wenn das Gerät über einen USB 2.0-Hub angeschlossen ist, wird der ehci-Treiber geladen und die Übertragungsgeschwindigkeit erhöht sich drastisch. Das Zurücksetzen auf ein 32-Bit-Betriebssystem hatte keine Auswirkungen auf die Leistung.