Forum: Mikrocontroller und Digitale Elektronik FX2 lässt sich nicht mehr programmieren


von Christian H. (cavorca)


Lesenswert?

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

von Hans-Christian (Gast)


Lesenswert?

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

von Michael (Gast)


Lesenswert?

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).

von Christian H. (cavorca)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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?

von Michael (Gast)


Lesenswert?

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. :-)

von Christian H. (cavorca)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Christian H. (cavorca)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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

von Christian H. (cavorca)


Lesenswert?

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.

von Volker (Gast)


Lesenswert?

>>Ich habe den FX2 ohne EEPROM gestartet. Dann hat er laut Gerätemanager:
>>VID=04B4 PID=8613

Diese Werte sind korrekt.

von Christian R. (supachris)


Lesenswert?

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...

von Christian H. (cavorca)


Lesenswert?

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?

von Christian R. (supachris)


Lesenswert?

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.

von Christian H. (cavorca)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Christian H. (cavorca)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

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
Noch kein Account? Hier anmelden.