Hallo zusammen, ich habe ein Board entwickelt, welches schon mehrere Jahre im Einsatz unter WIN XP perfekt läuft. Der Cypress EZ-USB Chip hängt als Slave Fifo am FPGA und die Daten werden per Bulk Transfer an den PC übertragen und weiterverarbeitet. ( ca. 40 Mbyte (Win XP) , 15-20 MByte (WIN 8.1, 64Bit) Bei der Migration nach WIN 8.1 bricht die Transfer Rate dauerhaft konstant ein. Mein Anwenderprogramm in c# habe ich in die neueste Visual Studio 2013 Version übernommen und ohne Probleme zum laufen gebracht. Ein Testprogramm, welches nur den USB Transfer beinhaltet wurde erstellt. Der Code zum read/write auf das Board ist also unverändert, samt allen Konfigurations Einstellungen ( Endpoints, Blockgröße usw. ) Cypress bietet zur Zeit einen universellen cybusb.sys Treiber win 8 an, der 32/64 Bit kann. Im Visual Studio habe ich schon die verschiedenen Varianten soll heißen Compilieren für 32 Bit Ziel bzw. 64 Bit Ziel Platform ausprobiert mit keinem unterschiedlichen Ergebnis. Der PC schaftt an der gleichen USB Buchse unter WIN 8 über eine externe Festplatte locker 32 MByte read oder write. Also muss es ein Treiber Problem sein oder eine Konfig Einstellung in WIN 8 Leider kenn ich mich in WIN 8 noch schlecht aus um überhaupt einen Ansatz zu finden woran das Problem liegen könnte. Ich bin für jeden Hinweis dankbar.
Hallo zusammen, nach vielen Stunden konnte ich das Problem nun doch selbst lösen. Problem: Die aktuellen Treiber von Cypress für WIN 8 sind einfach nur Schrott. Kann man nicht anders sagen. :-((( Lösung: Auf der Cypress Internet Präsens suche man nach Cypress Suite USB 3.4.7 Darin enthalten sind im Verzeichnis \Cypress Suite USB 3.4.7\Driver\bin\wlh die win7 64Bit Treiber versteckt. Dann nur den cyusb.sys Treiber ( ohne Coinstaller ) einer dll Datei installieren. Da man als entwickler i.d.R. eine eigene VID, PID hat muss diese in der INF. Datei angepasst werden. Der angepasste Treiber ist dann natürlich NICHT Signiert. Deshalb muss man unter den erweiterten Start Opionen unter WIN 8 einmalig einsteigen mit der Option ( weiß nicht genau wie das geheisen hat ) "nicht auf signierten Treiber bestehen" oder so ähnlich. Dann den Treiber wie üblich intallieren. Und danach aus dem Verzeichnis \Cypress Suite USB 3.4.7\CyUSB.NET\bin die entsprechennde CyUSB.dll Datei als Referenz in das Projekt einbinden. Jetzt geht das Board wieder ab wie der geölte, mega-Donner-Blitz. 45 MByte/sec stabil ( echt Hammer !!! ) Fazit: die eigentlich von Cypress angebotenen win 7 / 8 Treiber, welche digital signiert sind haben einen großen Nachteil - total lahm - die VID / PID ist fest mit der Signierung verbunden Will man eine eigene VID/PID haben bricht die Signierung und man muss sowieso als unsigniert installieren.
Ich hab einen Tipp für dich: Lass es sein mit dem Cypress Treiber. Wir hatten 2008 auch mit dem angefangen, sind aber dann 2009 auf WinUSB umgestiegen. Der cyusb.sys hat so viele Bugs, die sich in jeder Version ändern, das macht einfach keinen Spaß. Wir hatten massive Probleme mit asynchronen BULK Transfers, da machte der nur Mist. Mit der WinUSB hast du immer einen stabilen Treiber, der von MS weiterentwickelt wird und auf allen Windows seit XP SP2 schon drauf ist. Signierung ist auch kein Thema, ist ja schon integriert. Wir hatten mit WinUSB noch keinen einzigen Fehler oder Aussetzer, Geschwindigkeit ist auch super, mit 2.0 HighSpeed ca. 42MB/s dauerhaft BULK IN. Und der geht auch völlig transparent mit dem FX3, ich hatte da schon knapp 350MB/s BULK IN geschafft an einem Intel xHCI. Das Gefrickel mit dem CyUSB tun wir uns nicht mehr an, die Umstellung ist kinderleicht. http://msdn.microsoft.com/en-us/library/ff540196.aspx Seit Windows 8 kann der jetzt auch ISO-Streaming, falls das wichtig wäre.
Hallo zusammen, ich hab den Rat von Christian R nun ausprobiert und den WinUSB Treiber auf meinem XP Rechner installiert. Dazu die Anwender Software auf die winusb.dll umgeschrieben mit folgendem Ergebnis: - das Erkennen und Entfernen des eigenen USB Device funktioniert sehr zuverlässig soll heißen WESENTLICH besser als mit dem orginal Cypress Treiber. - allerdings hab ich jetzt wieder ein Performance Problem Bulk In Transfer im WinUSB Raw_IO Mode ca. 30 MByte / sec. Auf dem gleichen PC sonst gleiche Konstellation ist mit dem Cypress Treiber locker mehr als 40 MByte / sec zu erreichen. Der FX2 ist hierbei über ein 16 Bit Daten Interface am FPGA im Slave Fifo Mode. Nach vielem rumprobieren und lesen bin ich im Augenblick ratlos wie ich den Durchsatz unter WinUSB noch verbessern kann. Mein Testprogramm fordert immer ein ganzzahliges Vielfaches von 512 Byte Blockgrößen zum lesen. z.B. 2000 * 512 Byte ( ca 1 MByte) Read_Endpoint usw. Wäre sehr dankbar, wenn jemand noch eine Tipp für mich hätte.
Hm, seltsam. Wir haben zumindest unter Windows 7 keine derartigen Probleme. IN BULK ist knapp über 40MB/s. Sowohl asynchron als auch synchron. Vielleicht hat da die neue WinUSB unter Windows 8 einen Treffer? Ich kanns leider nicht testen, aus gutem Grund verwenden wir hier kein Windows 8/8.1
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.