mikrocontroller.net

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


Autor: Christian H. (cavorca)
Datum:

Bewertung
0 lesenswert
nicht 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:
EZ-USB Control Panel - built 11:31:58 Sep 17 2002
Get PipeInfo
Interface Size 136
Pipe:  0   Type: INT Endpoint:  1 OUT  MaxPktSize: 0x40
Pipe:  1   Type: INT Endpoint:  1 IN   MaxPktSize: 0x40
Pipe:  2   Type: BLK Endpoint:  2 IN   MaxPktSize: 0x400
Pipe:  3   Type: BLK Endpoint:  4 OUT  MaxPktSize: 0x200
Pipe:  4   Type: BLK Endpoint:  6 IN   MaxPktSize: 0x200
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:
Toggle 8051 Reset
Vendor Request
Vendor Request failed
Ein an das System angeschlossenes Gerät funktioniert nicht.

- wenn ich eine Firmware per "Download" auf den FX2 übertrage erscheint 
so etwas:
Toggle 8051 Reset
Anchor Download 3 bytes: addr=33
0000 02 49 97 
Anchor Download 3 bytes: addr=43
0000 02 46 00 
Anchor Download 3 bytes: addr=53
0000 02 46 00 
Anchor Download 3 bytes: addr=0
0000 02 45 F4 
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

Autor: Hans-Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Christian H. (cavorca)
Datum:

Bewertung
0 lesenswert
nicht 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/Ru...
(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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. :-)

Autor: Christian H. (cavorca)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian H. (cavorca)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian H. (cavorca)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Volker (Gast)
Datum:

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

Diese Werte sind korrekt.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Christian H. (cavorca)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian H. (cavorca)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian H. (cavorca)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.