Hallo, ich entwickle gerade ein kleines Testgerät für PC's. Das Testgeräte basiert auf einem Mikrocontroller. Welcher das ist, ist noch offen (sollte aber in Richtung STM32xxxxx gehen). Das Testgerät ist per USB angeschlossen und meldet sich primär als Virtual-COM-Port um seine Funktionalitäten über ein Command-Line-Interface zur Verfügung zu stellen. Neben einigen anderen Tests soll unter anderem auch die USB-Geschwindigkeit gemessen werden. Und zwar genau an dem Port, an dem das Gerät sowieso schon für die Kommunikation angeschlossen ist. Mein Problem ist nun die Umsetzung des Speedtest. Es stehen mir Hardwaremäßig und Softwaremäßig (sowohl auf Seiten des Microcontrollers als auch auf Seiten des Test-PC's) alle Türen offen. Im Internet hab ich dazu leider nichts gefunden... Habt ihr irgendwelche Ideen für die Umsetzung? Meine erste Idee war es einen kleinen USB-Hub zu verbauen und dahinter einen einfachen USB-Stick auf den ich eine Datei kopieren könnte (über die benötigte Zeit kann dann auf die Geschwindigkeit geschlossen werden). Das Ganze ist aber eher eine Bastlerlösung und ich hätte lieber eine Lösung die z.B. keinen Zusätzlichen USB-Stick benötigt (bzw. einen "USB-Stick" den ich als IC verbauen kann). Noch zum Thema Messbereich und Genauigkeit: Mir ist klar, dass ein Mikrocontroller oder auch ein USB-Stick nicht gerade die schnellsten Geräte sind und deshalb nicht unbedingt für einen reinen USB-Speedtest geeignet sind. Für meine Anwendung reicht es aber, wenn ich beim Testen an die Grenzen des USB-Geräts herankommt, solange diese irgendwo zwischen USB-Fast und USB-HighSpeed liegen. Würde mich freuen wenn ihr mir ein paar Ideen liefern könntet (muss nicht zwingend eine Komplettlösung sein, ich bin über jede Idee froh) Danke im Voraus.
die Frage ist was du damit machen willst? du musst den Speedtest für deine Daten machen, es macht keinen Sinn den Test für ein Massenspeicher zu machen, wenn später alles über einen ComPort läuft. Wie planst du mit dem Gerät Daten auszutauschen?
Hallo, dachte mir schon, dass meine Erklärung noch Fragen offen lässt (war echt schwer mein Vorhaben in Worte auszudrücken und ich hab mich auch ein bisschen verrennt). Ich Versuch mal das in einem Satz auszudrücken. Peter II schrieb: > die Frage ist was du damit machen willst? Das Gerät soll validieren könnte, dass an dem USB-Port des zu testenden PC's (an dem mein Mikrocontroller-Testgerät angeschlossen ist) ein USB-Port mit USB2.0-HighSpeed verfügbar ist. Über VCOM werde ich das kaum Testen können (das ist ja allerhöchstens USB Fastspeed). Wie die übertragenen Daten aussehen ist mir eigentlich egal.
hansgeorg schrieb: > Das Gerät soll validieren könnte, dass an dem USB-Port des zu testenden > PC's (an dem mein Mikrocontroller-Testgerät angeschlossen ist) ein > USB-Port mit USB2.0-HighSpeed verfügbar ist. dann frag doch per Software die Eigenschaften der Verbindung ab. Dein UBS wird doch wohl wissen welche USB Geschwindigkeit es aufgebaut hat. Der PC kennt es auch.
Peter II schrieb: > Dann frag doch per Software die Eigenschaften der Verbindung ab. Erstmal danke für deine schnellen Rückmeldungen! Das ist für meine Zwecke leider nicht ausreichend. Wir hatten schon mal ein Gerät das Probleme hatte, die wir damit nicht erkannt hätten. Dort konnten sich die USB-Geräte ganz normal als HighSpeed-Device melden. Sobald aber größere Datenmengen über den Bus geschickt wurden, brach das Ganze zusammen. Grund dafür war wahrscheinlich ein Designfehler (bei einer Signalmessung hat man eine überlagerte Schwingung erkennen können. Diese traten aber nur bei längeren Übertragungen mit USB-HighSpeed-Geräten auf). Hatte gerade eine neue Idee: Ein FTDI-Chip (FT2232HL). Das ist ein USB->2xUART IC, der über USB-High-Speed läuft. Einen UART-Channel könnte ich ja dann für meinen µC als Kommunikationskanal nutzen, beim anderen mache ich einen Loopback (ich verbinde also direkt UART_RX und UART_TX). Über den Loopback kann ich dann zumindest einen Faktor für die Geschwindigkeit herausfinden (ist zwar nicht die reine USB-Geschwindigkeit, aber immerhin ein Anhaltspunkt).
Die Geschwindigkeit einer VCOM sollte der eingestellten Baudrate entsprechen und liegt damit weit unter USB2.0 (480Mbit/s). Bei meinem Adapter kann ich maximal 921600 Baud einstellen (0,74MBit/s).
Der FTDI Chip kann bis zu 12MBaud. Ich dachte dass das schon reichen könnte, wenn ich ihn in beide Richtungen belaste (etwas overhead ist ja noch sicher dabei und beim Loopback wird die USB-Schnittstella ja quasi doppelt belastet...) Leider bin ich in meinem Test (10MB an Daten, gesendet über TeraTerm) nur auf etwa 40kB/s gekommen (Könnte aber auch sein, dass TeraTerm bremst)
hansgeorg schrieb: > Der FTDI Chip kann bis zu 12MBaud. Die Preisfrage ist aber, kann das auch die Treiber-dll und Teraterm? Hast Du mal mit dem Oszi nachgemessen, ob da wirklich 6MHz rumzappeln (0xAA senden).
hansgeorg schrieb: > Neben einigen anderen Tests soll unter anderem auch die > USB-Geschwindigkeit gemessen werden. Und zwar genau an dem Port, an dem > das Gerät sowieso schon für die Kommunikation angeschlossen ist. Über die VCOM Schnittstelle misst Du nur wie gut die VCOM Implementation im Host ist - ältere Windoof Versionen haben da ihre Probleme lange bevor man Full Speed ausreizt. Auch die Anwendung spielt eine entscheidende Rolle: hansgeorg schrieb: > Leider bin ich in meinem Test (10MB an Daten, gesendet über TeraTerm) > nur auf etwa 40kB/s gekommen (Könnte aber auch sein, dass TeraTerm > bremst) Welche Richtung? Die XMODEM/YMODEM/ZMODEM Protokolle brauchen auch zeitnahe Rückmeldung vom Device. Du misst hier vermutlich nur die Latenz der Software. Peter D. schrieb: > Die Geschwindigkeit einer VCOM sollte der eingestellten Baudrate > entsprechen Schwachsinn. Das gilt nur für physiche UART Ports. Virtuelle VCOM Ports können senden was USB hergibt - wenn das OS und die Anwendung das auch vertragen, also z.B. mit großen Blöcken arbeiten. Beispiel: Windows 10, USB VCOM @921600 Baud. Ich hatte aber mehr als 250kByte/sec netto bei Übertragung gemessen, und da ist noch signifikanter Overhead im µC Programm drin - der kann nicht schneller.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.