USB Driver Wizard: Compound Device
Hallo,
ich habe folgende Konfiguration (getestet mit V8.5 und 8.6 auf WinXP):
Ein Hochfrequenzboard, was mit einem Cypress USB Controller bestückt ist, der einen FPGA "steuert". Das Board ist proprietär im Forschungsbereich entwickelt worden und läuft mit Linux-Software ohne Probleme. LV soll das Board für Windows verfügbar machen. Controller ist der CY7C68013A, ein FX2LP.
Beim Einschalten des Boards meldet sich der "leere" USB-Controller an Windows an. Mit dem Treiber-Wizard eine Konfiguration eingespielt, macht den Controller unter LV verfügbar. Meine Applikation lädt dann das Firmware-File auf den Controller runter und startet ihn neu.
Mit der Firmware ist der Controller so konfiguriert, dass er 3 Interfaces hat: Das erste ist für die EP0-Kommunikation gedacht. Die beiden anderen für High-Speed-Datenübertragung. Das eine Interface in Richtung Controller, das andere in Richtung Host. Diese beiden Interface jeweils bulk transfer, sollte also im LV machbar sein.
So gehts mit Cypress-Software: Beim compilieren der Software stelle ich die originale Vendor- und Product-ID von Cypress ein. Damit ist es möglich mit einem EZ-USB-Tool von Cypress und einem entsprechenden Treiber das Board in Windows einzubinden und mit dem Tool die USB-Konfiguration auszulesen. Das geht tadellos. Leider nutzt mir das nicht allzuviel, weil der Treiber nicht für die Anwendung gedacht ist, sondern wirklich nur für die Tests.
Jetzt erstelle ich mit dem NI Driver Wizard die Konfiguration für das Interface. Es ist ein Compound Device mit 3 Schnittstellen. Den Treiber tausche ich dann mit dem Cypress-Treiber aus und verbinde das Board mit dem PC. Allerdings war es das dann auch schon: Den Treiber als Compound Device konfiguriert hat zur Folge, dass mir bei der Installation gesagt wird, das Treiber sei nicht kompatibel.
"Aus Spaß" habe ich dann mit dem Wizard eine Konfiguration erstellt, die kein Compound Device ist, also nur eine Schnittstelle hat. In der Hoffnung, dass dann wenigstens erstmal die EP0-Kommunikation klappt. In diesem Fall wird mir der Treiber (trotz der vorhandenen 3 Interface) als kompatibel angezeigt und installiert. Ergebnis: "Das Gerät kann nicht gestartet werden."
Der Support konnte mir in den vergangenen 5 Wochen nicht weiterhelfen. Meine Einschätzung: Der Support kommt nicht an die entsprechenden Fachleute für USB ran. Ich habe denen die Konfiguration geschickt (die ja mit Cypress oder mit der früheren Anwendung unter Linux funktioniert), aber das Resultat war dürftig. Einmal schien es, als würde es funktionieren. Es hat sich aber dieser Tage als Flop herausgestellt: Im nächsten Schritt bekomme ich einen Blue Screen: Beim Lesen des Device descriptors. Mit meinem "LED-Debugger" (leider verfügt der Controller über kein JTAG-Debugger) habe ich mir nachgewiesen, dass beim Übergang in den Blue Screen der Controller gar nicht erst angesprochen wird. Also der Treiber für sich versagt. Nicht etwa durch eine falsche Antwort des Controllers.
Hat jemand Erfahrung?
Viele Grüße
Frank
|