wir möchten ein USB-Device zur Steuerung einer Maschine bauen und wollen den Renesas SH7203 dazu verwenden. Die ersten Tests mit dem StarterKit und der mitgelieferten Beispiel-Firmware waren gut, aber nun wollen wir die Geschwindigkeit erhöhen und haben dabei ein Problem. Wenn man einmal 2048 B (B=Bytes) liest (aus Sicht des PC) so ist es möglich 7 MB/s zu erreichen. Wenn ich aber 10 mal schnell hintereinander 2048 B lesen will, dann ist das erste Mal schnell (0,3ms), die 9 restlichen Male gehen deutlich langsamer: 4ms.
Ich habe verschiedenes probiert, aber nun keine Idee mehr, wo ich noch etwas verändern kann/muss, damit dass immer so schnell geht. Wenn ich 10 mal nur 1024B lese, dann ist ungefähr die Hälfte der Vorgänge schnell , die andere Hälfte ebenfalls langsam mit 4 ms, in unterscheidlicher Reihenfolge.
Auf PC-Seite verwenden wir den LIBUSB-driver 1.12.1.0 , WinXP Pro und Delphi6 ebenfalls mit libusb. Daher meine Frage hier im Foum: Gibt es etwas bei Hi-Speed und LibUSB zu beachten? Etwas, was vielleicht bei Full-Speed nicht so bedeutend ist? Bei Hi-Speed gibt es ja z.B. diese 125 us-Frames. Muss daher etwas auf PC-Seite an diesen schnellen Takt 'angepasst' werden? Bei einem Full-speed-Prozessor habe ich z.B. die Erfahrung gemacht, dass x-maliges bulkread von 64 Bytes mindestens x ms dauert, 'weil' es da diesen 1ms-Frame gibt, und jedes bulkread dann in einen eigenen gepackt wird. Sagt man einmal bulkread mit (x*64B) löst sich das Problem. Leider funktioniert das nicht ganz so beim Hi-speed-Proz. ...
Damit zum Schluss noch der Hinweis: Beim Testprogramm verwende ich die synchrone bulkread-Funktion; die USB-Kommunikation läuft in einem Extrathread, ähnlich wie ich es schon bei anderen Test umgesetzt habe.
Vielen Dank für Tipps.
Peter Se
Comment