Hallo,
ich hab ein AD7150-EvalKit bekommen. Die USB-Treiber lassen sich leider
nicht installieren. Als USB-Interface dient ein CY7C68013A von Cypress.
Im Anhang befindet sich die INF-Datei im TXT-Format.
Betriebssystem ist WinXP 32-Bit. Die ezusb.sys (V1.3) befindet sich im
system32/drivers-Verzeichnis, usbfunctions.dll im system32-Verzeichnis.
Die INF-Datei befindet sich im INF-Verzeichnis.
Auch das manuelle Installieren per Rechtsklick auf die INF-Datei brachte
keinen Erfolg, Fehlermeldung in allen Fällen, dass kein Treiber gefunden
werden konnte oder dass das Gerät nicht richtig konfiguriert werden
konnte (wie auch, ohne Treiber).
Die im Gerätemanager zurückgemeldete VID/PID passt zur INF-Datei, das
Interface an sich ist also okay.
Kennt sich jemand mit den Cypress Controllern bzw. deren
Treiber-Installation aus?
Was mir aufgefallen ist, ist dass in der INF-Datei unter folgendem
Eintrag
1
[ADBVUSB.Files.Inf]
2
adiusbicv.Inf
auf eine INF-Datei verwiesen wird, die ich so nur bei anderen Evalkits
von AnalogDevices gesehen habe - die haben dann aber keine INF-Datei mit
dem Namen des Evalboards, sondern eben nur die adiusbicv.INF, die fast
gleich wie die INF-Datei aus dem Anhang aufgebaut ist.
Diese adiusbicv.INF gibt's aber nicht im Installationspaket zum
AD7150-Kit, also vermute ich, dass da jemand einfach ne INF kopiert hat
und dabei einen Fehler gemacht hat.
Leider half aber auch das Umbenennen der INF-Datei bzw. der Einträge
nichts.
Fehlt da vielleicht noch eine Datei? Kann man evtl. manuell über die
Registry die Einträge anlegen?
Ralf
>AD7150-EvalKit
Wenn das nicht vom Himmel gefallen ist, dann gibt es dafür ein
Hersteller. Und was sagt der dazu?
Vielleicht:
'It is absolutely impossible to use this Eval-Board with WinXP, because
since 10 years, WinXP is no longer supported.'
oder
'Hello, you can use ezusb.sys with your Windows 32 bit systems. But not
with WinXP, beacause WinXP is .... since ...'
Gruß Klaus
Bissl seltsam ist dass da der alte ezUSB verwendet wird. Der Treiber für
den FX2 ist eigentlich der CyUSB. Aber kommt halt drauf an, was die
Anwendung von AD benutzt. Anscheinend fehlt aber wirklich diese ad inf
Datei, du kannst die ja spaßeshalber mal auskommentieren aus dem Inf
File. Die Installation des Treibers über rechtsklick -> installieren
geht sowieso nicht bei Gerätetreibern, nur in Inf und system32 Ordner
kopieren reicht auch nicht. Du musst schon im gerätemanager auf Treiber
installieren und die Ind Datei direkt auswählen gehen.
@Klaus:
> Wenn das nicht vom Himmel gefallen ist, dann gibt es dafür ein> Hersteller. Und was sagt der dazu?
Das Kit ist in der Firma "aufgegeben" worden, weil sich's da auch nicht
installieren lies. Dann isses wohl ne Weile im Schrank rumgegammelt und
jetzt "ausgemistet" worden. Die Kollegen hatten damals wohl auch
zumindest den FAE des Distris an der Strippe, der's angeblich auch an
der Hersteller weiterleitete, aber das blieb erfolglos.
Ein Kollege, der leider nicht mehr verfügbar ist, hat's wohl dann
hinbekommen, aber leider weiss keiner mehr, wie er's gemacht hat...
Da kursierte nur das Gerücht, dass noch eine zusätzliche Datei kopiert
werden musste und dann gings...
@Christian R.:
> Der Treiber für den FX2 ist eigentlich der CyUSB. Aber kommt halt drauf> an, was die Anwendung von AD benutzt.
Die Anwendung von AD ist in erster Linie wohl nur ein
LabView-Demoprogramm, um ein paar Registersettings zu machen und sich
die Werte grafisch ausgeben zu lassen.
> Anscheinend fehlt aber wirklich diese ad inf Datei, du kannst die ja> spaßeshalber mal auskommentieren aus dem Inf File.
Das hab ich noch nicht probiert, werd ich tun.
> Die Installation des Treibers über rechtsklick -> installieren> geht sowieso nicht bei Gerätetreibern, nur in Inf und system32 Ordner> kopieren reicht auch nicht. Du musst schon im gerätemanager auf Treiber> installieren und die Ind Datei direkt auswählen gehen.
Geht nicht, Fehlermeldung "keine Infos zur Hardware" oder so ähnlich.
Ralf
nun die Installation des Treibers ist ganz einfach
Treiber manuell über die Systemsteuerung installieren.
Bei der Installation auf die Inf im Inf Ordner zeigen.
Dann sollte das problemlos gehen. Alternativ inf und sys
in einen getrenten Ordner kopieren und dorthin verweisen.
Wenn das nicht geht passen die IDs nicht (mit USB View prüfen)
Thomas
@Hans-Georg:
> Schau mal in den SetupApi-log Files, die befinden sich normalerweise im> Windows inf Verzeichnis.
Hab ich getan, aber da steht (zumindest für mich) auch nur in Textform,
was mir der Gerätemanager auch gesagt hat ;)
Kein kompatibler Treiber gefunden...
@Thomas:
> nun die Installation des Treibers ist ganz einfach> Treiber manuell über die Systemsteuerung installieren.> Bei der Installation auf die Inf im Inf Ordner zeigen.> Dann sollte das problemlos gehen. Alternativ inf und sys> in einen getrenten Ordner kopieren und dorthin verweisen.
Wie ich weiter oben geschrieben habe, kam dann die Meldung, dass der Ort
keine Infos über die Hardware enthält...
> Wenn das nicht geht passen die IDs nicht (mit USB View prüfen)
Dem Gerätemanager nach passen sie, aber ich prüf's nochmal.
Ralf
So, ich hab mal die Inf Datei durch den Checker gejagt und die ganzen
Fehler behoben. Konnte ja nicht klappen, denn die Source Disk Name
Section war gar nicht da.
Probier mal bitte. Bei der Class GUID bin ich mir nicht sicher, was die
Anwendung erwartet, ich hab erst mal die USBDevice Class genommen
jetzt...
@Christian R.:
Super, danke! Die INF-Datei wird jetzt immerhin erkannt!!! Jetzt gibt's
ne Fehlermeldung "der erforderliche Abschnitt wurde in der INF-Datei
nicht gefunden".
Mal schauen ob ich rausfinden kann, welcher Abschnitt gemeint ist.
> Da könnte man mal mit dem Inf Checker gucken
Der Inf-Checker ist ein Tool von Cypress?
Ralf
Ja, wie gesagt, da war ich mir unsicher. Nimm mal die Class GUID oben
raus und mach die Class wieder zu USB, dann gehts vielleicht schon.
ChkInf ist Teil des Windows Driver Kits (WDK), das kann man bei MS
herunterladen.
@Christian R.
> Ja, wie gesagt, da war ich mir unsicher. Nimm mal die Class GUID oben> raus und mach die Class wieder zu USB, dann gehts vielleicht schon.
Nein, das hatte ich bereits probiert, aber... (siehe ganz unten).
> ChkInf ist Teil des Windows Driver Kits (WDK), das kann man bei MS> herunterladen.
Ah, okay. Damit wollte ich mich eh mal beschäftigen, wegen einem
USB-CDC/VCP-Treiber, aber eins nach dem anderen ;)
Sooooooo, und das i-Tüpfelchen auf deiner Lösung war dann, den fehlenden
[ClassInstall32] Eintrag vorzunehmen, direkt hinter der Version-Sektion
und ohne Inhalt.
Ich danke dir, das Board läuft nun!!!
Dann kann ich am WE ein bisschen experimentieren.
Ralf
Mit nur wenig Aufwand kann man auch eine eigene Class definierieren.
1
Class=MeineKlasse
2
ClassGUID={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
Für xxxx.. eine neue Guid generieren
1
[ClassInstall32]
2
AddReg=ClassRegAdd
3
4
[ClassRegAdd]
5
HKR,,,,%ClassName%
6
HKR,,Icon,,"-20"
-20 ist das USB Icon.
Und in die Strings section:
1
%ClassName% = "Meine tollen Devices"
Dann hat man im Gerätemanger eine eigene Kategorier "Meine tollen
Devices"
Das ganze geht natürlich nur wenn das Device ohne einen von Windows
vorgegebenen Classinstaller installiert werden kann, d.h. ein
properitäres Interface hat. (Also kein HID, COM, Netzwerk etc)
@Lattice User:
Danke für die Erläuterung. Die Beschäftigung mit der Host-Seite steht
auch auf dem Programm, dürfte aber momentan noch zu hoch gesteckt sein.
Allein INF-Files scheinen da schon ein Buch(!) für sich zu sein,
geschweige denn die Auswahl und Implementierung der richtigen USB-Klasse
(beispielsweise wenn man auch für ein 64-Bit OS einen Treiber haben
möchte).
Ralf
Am besten keine Treiber selber schreiben. Bei USB Geräten ist das dank
Device Klassen und LibUSB, WinUSB kein Thema. Gerade bei 64 Bit und
Signaturzwang nervts dann schnell.
Christian R. schrieb:> Am besten keine Treiber selber schreiben. Bei USB Geräten ist das dank> Device Klassen und LibUSB, WinUSB kein Thema. Gerade bei 64 Bit und> Signaturzwang nervts dann schnell.
Device Klassen nutzen in diesem Zusammenhang nur etwas wenn es für diese
ein Standard Interface gibt. Nach meinen Kenntnisstand ist das bei USB
nur für HID, Storage und Audio der Fall.
Für alle anderen braucht man auch mit WinUSB eine eigene .inf Datei und
muss wenn ich mich nicht irre für Win64 auch signieren. Habe das aber
selbst noch nicht ausprobiert.
Seit Vista ist es auch möglich ohne Microsoftzertfizierung selbst zu
signieren (ausser Audio und Graphik wegen DRM).
Lattice User schrieb:> Für alle anderen braucht man auch mit WinUSB eine eigene .inf Datei und> muss wenn ich mich nicht irre für Win64 auch signieren. Habe das aber> selbst noch nicht ausprobiert.
Muss man nicht zwingend, wenn man mit der einmaligen Warnemldung bei der
Installation leben kann. Denn bei solchen nur-Inf Installtionen wird
nichts in das Windows Systemverzeichnis kopiert, also ist auch keine
Signatur erforderlich. Genau wie bei WinUSB, der signierte Treiber ist
bereits im Windows enthalten.
> Seit Vista ist es auch möglich ohne Microsoftzertfizierung selbst zu> signieren (ausser Audio und Graphik wegen DRM).
Naja, aber dann muss das System im Testsigning Modus sein, auch unschön.
Christian R. schrieb:>> Naja, aber dann muss das System im Testsigning Modus sein, auch unschön.
Nein, alles was du brauchts ist ein Autenthicode Certificat eines von MS
zugelassenen Austellers, kostet nicht die Welt.
@Christian R.:
> Am besten keine Treiber selber schreiben. Bei USB Geräten ist das dank> Device Klassen und LibUSB, WinUSB kein Thema. Gerade bei 64 Bit und> Signaturzwang nervts dann schnell.
Naja, es hapert aber schon, wenn man eine CDC-Klasse bzw. VCP
implementieren will. Soweit ich weiss ist mit dem Windows-Treiber
usbser.sys nur ein VCP pro Device möglich. Oder ist das mittlerweile aus
der Welt?
>> Für alle anderen braucht man auch mit WinUSB eine eigene .inf Datei und>> muss wenn ich mich nicht irre für Win64 auch signieren. Habe das aber>> selbst noch nicht ausprobiert.> Muss man nicht zwingend, wenn man mit der einmaligen Warnemldung bei der> Installation leben kann. Denn bei solchen nur-Inf Installtionen wird> nichts in das Windows Systemverzeichnis kopiert, also ist auch keine> Signatur erforderlich. Genau wie bei WinUSB, der signierte Treiber ist> bereits im Windows enthalten.
Interessant. Was ist denn nötig, um WinUSB zu implementieren? Wenn der
Treiber bereits im OS ist, wäre das natürlich gut. Ich hatte vor einer
Weile schonmal versucht herauszufinden, wie das alles im Detail ist und
wie man's implementieren muss, bin aber aus der MS-Seite dazu nicht
wirklich schlau geworden.
Ralf
Für WinUSB brauchst du halt ein USB Device, was sich als nicht-Standard
Klassen Gerät anmeldet, dann eine Inf Datei, wo die VID/PID eingetragen
ist, wie es auf der MS Homepage steht. Und dann kannst du über die
WinUSB.dll auf die Endpoints direkt zugreifen. Dazu brauchst du das WDK
und das Windows SDK.
Hier sind eigentlich alle Infos zu finden:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff540196%28v=vs.85%29.aspx
Wegen Zertifikat: Wir haben ja ein Verisign Class 3 Code Signing
Zertifikat, aber irgendwie gibts auch Treiber, die damit trotzdem nicht
geladen werden, zum Beispiel der original CyUSB von Cypress oder der
PLX8311 Treiber. Ein eigener PCI Treiber jedoch lädt ohne meckern. Da
hab ich irgendwie noch nicht durchschaut, wieso das nicht immer klappt.
@Christian R.
> Für WinUSB brauchst du halt ein USB Device, was sich als nicht-Standard> Klassen Gerät anmeldet, dann eine Inf Datei, wo die VID/PID eingetragen> ist, wie es auf der MS Homepage steht. Und dann kannst du über die> WinUSB.dll auf die Endpoints direkt zugreifen. Dazu brauchst du das WDK> und das Windows SDK.
Die xDK's brauch ich aber auch nur zur Entwicklung, oder? Später
beschränkt es sich ja auf das Ansprechen der WinUSB.dll, denke ich mal.
> Hier sind eigentlich alle Infos zu finden:> http://msdn.microsoft.com/en-us/library/windows/ha...
Ich werd mir das mal in Ruhe zu Gemüte führen, auf der Seite bin ich
früher auch schon mal vorbeigekommen, damals fand ich's recht komplex.
> Wegen Zertifikat: Wir haben ja ein Verisign Class 3 Code Signing> Zertifikat, aber irgendwie gibts auch Treiber, die damit trotzdem nicht> geladen werden, zum Beispiel der original CyUSB von Cypress oder der> PLX8311 Treiber. Ein eigener PCI Treiber jedoch lädt ohne meckern. Da> hab ich irgendwie noch nicht durchschaut, wieso das nicht immer klappt.
Wie "schwierig" ist denn das Schreiben eines eigenen Treibers? Hab
hierzu schon zig Meinungen gelesen, die einen sagen ist easy, die
anderen sagen lass die Finger davon...
Klar, wenn man 64-Bit OS miteinbeziehen will, aber keine
WHQL-Zertifizierung durchführen kann (oder möchte), muss man wohl auf
WinUSB o.ä. gehen.
Ich werd mir die xDK's mal herunterladen und schauen, ob bzw. was so an
Beispielen dabei ist.
Ralf
Ralf schrieb:> Die xDK's brauch ich aber auch nur zur Entwicklung, oder?
Ja genau, da sind die Header Dateien und Libs drin.
Ralf schrieb:> Wie "schwierig" ist denn das Schreiben eines eigenen Treibers?
Ööööhm...also ich kann´s auch nicht. Alleine das Debugging ist gruselig.
Lass es sein, wenn du nicht die absolute Not hast.
@Rufus:
>> Wie "schwierig" ist denn das Schreiben eines eigenen Treibers?> Vergiss es.
Genau das war eine der o.e. Aussagen ^^
@Christian R.:
> Ja genau, da sind die Header Dateien und Libs drin.
Ah, okay.
>> Wie "schwierig" ist denn das Schreiben eines eigenen Treibers?> Ööööhm...also ich kann´s auch nicht. Alleine das Debugging ist gruselig.
Oha...
> Lass es sein, wenn du nicht die absolute Not hast.
Mmmmh... die hab ich glaub ich nicht ^^ Mich interessiert eigentlich
eher, wie weit man mit einer LibUSB-Implementierung kommt. Ich schau
mal, ob in den xDK's Beispiele drin sind.
Ralf
@Rufus & Christian R.:
ARGL
Sorry, ich hab die Begriffe WinUSB und LibUSB vertauscht!
> Mich interessiert eigentlich eher, wie weit man mit einer LibUSB-> Implementierung kommt.
Sollte natürlich WinUSB heissen! LibUSB ist zwar auch interessant, aber
da muss ich mich noch durch das (L)GPL-Lizenzgeraffel wühlen, was das im
Detail bedeutet (evtl. auch für kommerzielle Zwecke).
Was WinUSB betrifft, da will ich natürlich auch nach Beispielen schauen,
und wie man das auf einem Controller implementiert.
Ralf
WinUSB implementiert man nicht auf dem Controller. WinUSB kann mit
jedem USB Device Controller verwendet werden, solange du keine ISO
Endpoints ansprechen willst. Der WinUSB ist es völlig egal, welcher
Controller am USB hängt. Auch 3.0 SuperSpeed geht transparent durch.
@Christian R.:
> WinUSB implementiert man nicht auf dem Controller. WinUSB kann mit> jedem USB Device Controller verwendet werden, solange du keine ISO> Endpoints ansprechen willst. Der WinUSB ist es völlig egal, welcher> Controller am USB hängt. Auch 3.0 SuperSpeed geht transparent durch.
Aaah, jetzt klingelt das langsam. Ich hatte ursprünglich gedacht, dass
es einen WinUSB-kompatiblen Stack auf dem Controller geben muss...
Okay, muss mir das ganze trotzdem mal in Ruhe durchlesen, ist mir noch
nicht ganz klar, ob bzw. wie das dann mit 64-Bit Windows +
zertifiziertem Treiber aussieht.
Ralf
Ralf schrieb:> ist mir noch> nicht ganz klar, ob bzw. wie das dann mit 64-Bit Windows +> zertifiziertem Treiber aussieht.
Kein Problem, denn der Treiber (winusb.sys) ist von Microsoft
geschrieben, bereits im Windows enthalten und signiert. Du brauchst nur
ein inf File, das muss nicht zwingend signiert sein, denn das wird ja
nicht ins Systemverzeichnis kopiert. Dann bekommst du bloß eine (rote
UAC-) Meldung, dass der Treiber nicht signiert ist, trotzdem
installieren? Und das wars. Mit unserer Verisign Signatur am Inf File
gibts nur noch eine blaue Meldung ob man dem Hersteller vertrauen will
mit der Option das dauerhaft zu tun.
@Christian R.:
> Kein Problem, denn der Treiber (winusb.sys) ist von Microsoft> geschrieben, bereits im Windows enthalten und signiert. Du brauchst nur> ein inf File, das muss nicht zwingend signiert sein, denn das wird ja> nicht ins Systemverzeichnis kopiert. Dann bekommst du bloß eine (rote> UAC-) Meldung, dass der Treiber nicht signiert ist, trotzdem> installieren? Und das wars. Mit unserer Verisign Signatur am Inf File> gibts nur noch eine blaue Meldung ob man dem Hersteller vertrauen will> mit der Option das dauerhaft zu tun.
Cool... Dann müsste ich jetzt mal schauen, wie ich da am besten
reinstarte.
Im Prinzip wohl am besten ein Devkit nehmen, von dem man die
Beispielsoftware hat, und entsprechend versuchen zu kommunizieren.
Ralf
WinUsb und die dazugehörigen Treiber KDMF(kernelMode) bzw UMDF(userMode)
sind erst ab Vista vorhanden. Unter XP kann man es nach installieren,
war bei mir damals aber Handarbeit und ein ziemliches Gefummel.
Christian R. schrieb:> Siehe hier: https://msdn.microsoft.com/en-us/library/ff540196.aspx
Yes³: All client SKUs of Windows XP with SP2 service packs support
WinUSB. WinUSB is not native to Windows XP; it must be installed with
the WinUSB co-installer.
Das liest sich schön aber es gibt meines Wissens keine stand alone
Installationssoftware die genau das für XP tut. Ich hatte damals das
Vista WDK heruntergeladen und die CoInstaller dlls daraus extrahiert und
dann noch Gefummel mit den inf Dateien und Versionen bis das alles
installiert war.