Hallo,
nach längerer Pause wollte ich mich nochmal mit dem FX2 beschäftigen.
Jetzt stehe ich jedoch vor dem Problem, dass er sich nicht mehr
programmieren lässt.
Folgende Probleme treten auf:
- Wenn ich vom EEPROM boote erscheint folgende Interface konfiguration:
1
EZ-USB Control Panel - built 11:31:58 Sep 17 2002
2
Get PipeInfo
3
Interface Size 136
4
Pipe: 0 Type: INT Endpoint: 1 OUT MaxPktSize: 0x40
5
Pipe: 1 Type: INT Endpoint: 1 IN MaxPktSize: 0x40
6
Pipe: 2 Type: BLK Endpoint: 2 IN MaxPktSize: 0x400
7
Pipe: 3 Type: BLK Endpoint: 4 OUT MaxPktSize: 0x200
8
Pipe: 4 Type: BLK Endpoint: 6 IN MaxPktSize: 0x200
9
Pipe: 5 Type: BLK Endpoint: 8 IN MaxPktSize: 0x200
Ich denke aber nicht dass ich das so mal reinprogrammiert hatte. Aber
vielleicht erinnere ich mich nur falsch.
- Wenn ich den EEPROM beschreiben möchte, also eine .IIC Datei an den
FX2 schicke erscheint folgendes:
1
Toggle 8051 Reset
2
Vendor Request
3
Vendor Request failed
4
Ein an das System angeschlossenes Gerät funktioniert nicht.
- wenn ich eine Firmware per "Download" auf den FX2 übertrage erscheint
so etwas:
1
Toggle 8051 Reset
2
Anchor Download 3 bytes: addr=33
3
0000 02 49 97
4
Anchor Download 3 bytes: addr=43
5
0000 02 46 00
6
Anchor Download 3 bytes: addr=53
7
0000 02 46 00
8
Anchor Download 3 bytes: addr=0
9
0000 02 45 F4
10
Toggle 8051 Reset
vorher - manchmal zumindest - ganz viele Fehlermeldungen wie beim
übertragen der iic Datei. Aber es scheint jedes mal etwas anderes zu
passieren.
Kann mir jemand sagen was das zu bedeuten hat? Hat jemand eine Idee was
ich noch versuchen kann? Oder ist der FX2 einfach kaputt?
Ich habe es auch mal auf einem anderen PC versucht, aber da habe ich die
gleichen Probleme.
Viele Grüße,
Christian
Hallo Christian,
wenn Du bein Einschalten des FX2 das EEPROM vom FX2 getrennt hast, also
SDA am EEPROM öffnest, aber so, daß die 2k2 Pullups am FX2 dranbleiben,
dann kannst Du, nachdem der FX2 ohne EEPROM gestartet ist, die
Verbindung wieder schliessen und den EEPROM neu programmieren. Bei mir
jedenfalls hilft's.
Gruss
Hans-Christian
Auch einen Versuch wert könnte es sein, SDA provisorisch auf GND zu
legen. Dann dürfte das EEPROM auch nicht erkannt werden. Nach dem Booten
dann die Brücke entfernen und das EEPROM neu beschreiben.
Auf meinen neuen Boards mache ich jetzt grundsätzlich einen Jumper zum
Einstellen der Adressbits. Dann kann man das EEPROM auf eine andere
Adresse legen, so dass es nicht als Boot-EEPROM erkannt wird.
Grüsse
Michael
P.S.: Ich arbeite nicht unter Windows und damit auch nicht mit den
Cypress-Tools. Ich kann daher nichts mit Deinen Fehlermeldungen
anfangen. Ich schliesse lediglich, dass vermutlich Müll im EEPROM ist,
da dann der FX2 nicht mehr richtig läuft. Einzige Alternative wäre ein
Hardwaredefekt (und das halte ich eher für unwahrscheinlich).
Hallo,
Vielen dank für eure Antworten! Ich hatte aus versehen die
Email-Benachrichtigung deaktiviert und mich schon ein klein wenig
geärgert, warum denn keiner antwortet ;-)
@Hans-Christian:
Ohne EEPROM zu booten habe ich nach dieser Anleitung versucht:
http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/fx2/
(ganz unten bei "Fallstrick")
Hilft aber leider nichts.
Das Problem, dass ich ein abstürzendes Programm hatte, hatte ich auch
früher schon mal und konnte es mit der Anleitung beheben. Jetzt ist es
aber auch so dass der FX2 sich gar nicht aufhängt. Im Gerätemanager kann
ich ihn finden. Sonst hatte ich in solchen Situationen immer ein
unbekanntes Gerät.
Ich befürchte daher schon, dass FX2 oder EEPROM kaputt sind. Hat jemand
eine Idee, wie ich raus finden kann was von beiden kaputt ist? Meine
größte Schwierigkeit ist dabei momentan, dass ich nicht 100% sicher bin
ob ich die Software nur falsch bediene. Die einfachen Fehler sind ja
meistens die schlimmsten.
@Michael:
Welche Software nutzt du denn unter Linux? Das habe ich hier auch zur
Verfügung.
Viele Grüße,
Christian
Also EEPROM muss man am besten hardwaremäßig deaktivieren, das mit dem
BEEF klappt nicht immer. Wenn du ihn in Hardware deaktiviert hast,
startet der FX2 mit der Standard-Config. Wenn das klappt, liegts an der
Firmware. Wie programmierst du den EEPROM? Über den "Lg EEPROM" Button?
Hallo Christian,
Muss superchris zustimmen: Unbedingt hardwaremässig deaktivieren.
Da I2C auf Open-Drain / Open-Collector Ausgängen basiert (daher ja auch
die notwendigen Pull-Ups), sollte es kein Problem sein, SDA per Brücke
auf GND zu legen. Dann wird kein EEPROM mehr erkannt. Wenn der FX2 dann
bootet, kannste die Brücke wieder öffnen und den EEPROM neu
programmieren.
Zu Linux: Ich nutze fxload zum Firmwareladen und eine eigene Firmware
für den FX2, die ich mit libusb anspreche. Ist eigentlich ziemlich
simpel aufgebaut, und hat den Vorteil, man weiss immer, was im
Hintergrund wirklich passiert. :-)
Christian R. wrote:
> Also EEPROM muss man am besten hardwaremäßig deaktivieren, das mit dem> BEEF klappt nicht immer.
Mir ist nicht ganz klar, was du meinst. In der Anleitung deaktiviert man
den EEPROM ja auch hardwaremäßig (SDA trennen)
> Wenn du ihn in Hardware deaktiviert hast,> startet der FX2 mit der Standard-Config. Wenn das klappt, liegts an der> Firmware.
Ja das läuft. Aber könnte es nicht auch sein, dass der Teil des FX2, der
die Daten vom EEPROM liest defekt ist?
> Wie programmierst du den EEPROM? Über den "Lg EEPROM" Button?
Bei mir steht auf dem Button nur "EEPROM.."
Ich habe Version 2.61 [700] vom EZ-USB Control Panel. Ist die alt?
Eben habe ich es nochmal versucht eine Firmware auf den EEPROM zu
schreiben. Diesmal scheint es zuerst auch zu funktionieren, aber Get
Pipe Info liefert nur Interface Size 16. Ich habe keine Pipes und kann
keine Daten transferieren.
Christian H. wrote:
> Christian R. wrote:>> Also EEPROM muss man am besten hardwaremäßig deaktivieren, das mit dem>> BEEF klappt nicht immer.> Mir ist nicht ganz klar, was du meinst. In der Anleitung deaktiviert man> den EEPROM ja auch hardwaremäßig (SDA trennen)
Achso, ich dachte du meinst das mit dem BEEF Vendor Request zum Löschen
des EEPROMs.
>> Wenn du ihn in Hardware deaktiviert hast,>> startet der FX2 mit der Standard-Config. Wenn das klappt, liegts an der>> Firmware.> Ja das läuft. Aber könnte es nicht auch sein, dass der Teil des FX2, der> die Daten vom EEPROM liest defekt ist?
Unwahrscheinlich aber möglich.
>> Wie programmierst du den EEPROM? Über den "Lg EEPROM" Button?> Bei mir steht auf dem Button nur "EEPROM.."> Ich habe Version 2.61 [700] vom EZ-USB Control Panel. Ist die alt?
Hmm....ich arbeite mit dieser CyConsole, und da gibts das EZ-Interface
zum Programmieren. Oder halt das .NET Dingens. Ein EZ-USB Control Panel
hab ich gar nicht....
> Eben habe ich es nochmal versucht eine Firmware auf den EEPROM zu> schreiben. Diesmal scheint es zuerst auch zu funktionieren, aber Get> Pipe Info liefert nur Interface Size 16. Ich habe keine Pipes und kann> keine Daten transferieren.
Ich tippe auf Fehler in der Firmware. Nimm doch mal eine der
Beispiel-Firmware also BulkLoop oder BulkText....sind ja genug da.
Christian R. wrote:
> Achso, ich dachte du meinst das mit dem BEEF Vendor Request zum Löschen> des EEPROMs.>
Das wird ja in der Anleitung beides gemacht. Das ist wohl gar nicht
nötig?
> Unwahrscheinlich aber möglich.
OK.
> Hmm....ich arbeite mit dieser CyConsole, und da gibts das EZ-Interface> zum Programmieren. Oder halt das .NET Dingens. Ein EZ-USB Control Panel> hab ich gar nicht....
Hm. Ist es eine sehr dumme Frage wie man die software bedient? Bei mir
werden keine Devices angezeigt. Gibt es irgendwo einen Button zum
initialisieren?
> Ich tippe auf Fehler in der Firmware. Nimm doch mal eine der> Beispiel-Firmware also BulkLoop oder BulkText....sind ja genug da.
Ich habe es mit dem Bulkloop beispiel versucht -> gleiches Problem. Das
lief bei mir früher auch schon mal. Mittlerweile habe ich eine neue
installation des softwarepakets und ich habe nicht noch einmal neu
kompiliert. Das ist aber kein Problem? Das einzige was ich vor dem
Programmieren gemacht habe ist die Datei von hex nach iic umzuwandeln.
Erst mal beim Reiter "Misc" in der DropDown Box den Treiber auswählen,
dann kommen auch die Geräte. Oben bei "Options" -> "EZ USB Interface"
kannst du dann bei "lg EEPROM" den programmieren. Hast du die Datei
"richtig" umgewandelt? Also mit dem gesetzten Bit, dass der auf 400khz
I2C Speed umschaltet? Sonst klappt das Booten nicht.
Bei mir hab ich das gleich im Keil drin, bei Output:
hex2bix.exe -i -f 0xC2 -v 0x0547 -p 0x2000 -c 0x41 Programm.hex
Christian R. wrote:
> Erst mal beim Reiter "Misc" in der DropDown Box den Treiber auswählen,
komisch, das ist bei mir leer.
Ich habe den FX2 ohne EEPROM gestartet. Dann hat er laut Gerätemanager:
VID=04B4 PID=8613
Diese Werte erscheinen mir komisch. Ist die Standart-VID nicht eine
andere?
Das fällt mir aber jetzt zum ersten mal auf. Früher stand da meine ich
noch was anderes drin.
Kann es sein dass bei mir mit dem Treiber etwas nicht stimmt? Ich hatte
schon mal den Eindruck, da ich mit der cyapi das device nicht ansprechen
konnte. Ich konnte auch keinen Fehler im Programm finden.
> dann kommen auch die Geräte. Oben bei "Options" -> "EZ USB Interface"> kannst du dann bei "lg EEPROM" den programmieren. Hast du die Datei> "richtig" umgewandelt? Also mit dem gesetzten Bit, dass der auf 400khz> I2C Speed umschaltet? Sonst klappt das Booten nicht.>> Bei mir hab ich das gleich im Keil drin, bei Output:>> hex2bix.exe -i -f 0xC2 -v 0x0547 -p 0x2000 -c 0x41 Programm.hex
meine Parameter sind:
hex2bix.exe -i -f 0xC2 Programm.hex
Bisher lief es damit, aber ich versuche es mal mit deinen Parametern.
Wenn ich damit Programmiere ist es eigentlich das gleiche. Es erscheint
im in der Konsole des Programms beim Versuch den EEPROM zu beschreiben
viel hex Code und am Ende:
Toggle 8051 Reset
Wenn ich dann nach 2 Minuten das board raus ziehe und wieder rein stecke
erscheint noch:
Vendor Request
Vendor Request failed
Ein an das System angeschlossenes Gerät funktioniert nicht.
Aber das ist wie gesagt in dem anderen Programm von Cypress.
Kann es sein, dass du den alten ezusb.sys Treiber und nicht den
cyusb.sys Treiber installiert hast?
Die VID/PID beim hex2bix kannste weglassen, aber die 0x41 is wichtig,
ohne ging´s bei mir nicht zuverlässig, weil das EEPROM lesen dann länger
dauert als Windows eine Antwort vom Gerät haben will...
Respekt! Das ist in der Tat der Fall! Ich hoffe das ist schon der ganze
Fehler.
Sonst probiere ich es demnächst mal unter Linux.
Der Korrekte Teiber sollte der im USB DevStudio sein?
wenn ich die inf Datei als neuen Treiber angebe erscheint die Meldung:
"Der angegebene Ort enthält keine Informationen über die Hardware."
in der cyusb.inf habe ich mal angepasst
VID_VVVV&PID_PPPP.DeviceDesc="Cypress Generic USB Device"
VID_0547&PID_2000.DeviceDesc="Cypress Generic USB Device"
bzw mit VID=04B4 PID=8613
-> gleicher Fehler. Was mache ich jetzt schon wieder falsch?
Hm, da stimmt die Inf noch nicht ganz. Ganz unten stehn auch nochmal die
PID/VID.
Der ohne EEPROM müsste aber eigentlich drin stehn. Ansonsten halt das
eintragen, was du dem EEPROM File macher übergeben hast, und das gleiche
muss auch in der descr.a51 stehn.
Christian R. wrote:
> Hm, da stimmt die Inf noch nicht ganz. Ganz unten stehn auch nochmal die> PID/VID.
Ich dachte das hätte ich gemacht?
> Der ohne EEPROM müsste aber eigentlich drin stehn. Ansonsten halt das> eintragen, was du dem EEPROM File macher übergeben hast, und das gleiche> muss auch in der descr.a51 stehn.
Ich habe jetzt mal den Treiber von braintechnology.de runtergeladen. Mit
deren inf-Datei geht es.
Und sogar das Bulkloop-Beispiel Programm auf dem PC funktioniert jetzt!
:-) Dann hatte ich wohl die ganze Zeit den falschen Treiber.
Vielen Dank Christian R.!
Vielen Dank auch an alle anderen!
Was mich aber trotzdem irritiert ist, dass die Datentransfers und die
Programmierung früher mit EZ-USB Control Panel geklappt haben. Naja
Hauptsache es geht jetzt.
Keine Ursache. ich hatte auch aus Versehen mal den alten Treiber
installiert und dann kam gleich BlueScreen. Genauso wie der noch neuere
im .NET Entwicklungspaket. Seltsam.
Gibt es eine Möglichkeit den EZUSB Treiber permanent aus Windows zu
entfernen? Grade eben musste ich schon wieder den Treiber ersetzten. Ich
will das jetzt nicht jedes mal machen müssen. Aber dafür kann ich mich
auch mal in allgemeinen PC-Foren umsehen.
Andere Frage:
Sehe ich das richtig: Wenn ich den CYUSB Treiber geladen habe, kann ich
dann auch mit der LIBUSB auf das device Zugreifen? Es scheint sehr
allgemein zu sein. Es macht auf mich den Eindruck als ob man mit der
libusb alle USB Geräte ansprechen kann.
Ich frage weil ich mir noch nicht sicher bin ob ich die libusb oder die
CYapi nehme.
Nein, das geht nur entweder oder. Für die LibUSB musst du den LibUSB
Treiber installieren. Ist bissl einfacher zu handhaben, aber ansonsten
macht das auch keinen Unterschied.
Den Treiber bekommst du weg, indem du im gerätemanager alle
ausgeblendeten geräte aktivierst, die entsprechenden USB Devices
deinstallierst und dann noch im Ordner Windows/inf die oemxx.inf
durchsuchst, welche die von dem falschen Treiber sind, und die auch
löschst. Dann ist das wie frisch.