Forum: Mikrocontroller und Digitale Elektronik FX2 EEPROM laden


von jan (Gast)


Lesenswert?

Hallo,

gerade habe ich versucht das EEPROM des FX2 zu beschreiben. Nun macht er 
nichts mehr.

Mit Hilfe von

hextobix -I -F 0xC2 -V 0x04b4 -P 0x8613 FX2.hex

habe ich die iic Datei erstellt.

Wie gesagt, jetzt macht er nichts mehr. Kann mir jemand sagen, was 
schief gelaufen ist und wie ich das wieder rückgängig machen kann?

Viele Grüße
Jan

von Sebastian (Gast)


Lesenswert?

Kann sein, daß ich das mit dem AN2132 verwechsle, aber ist das EEPROM 
nicht extern? Dann könnte es reichen, die Datenleitung zu diesem 
Baustein aufzutrennen, den FX2 einzuschalten und dann die Leitung wieder 
zu verbinden.

von jan (Gast)


Lesenswert?

Ich weis jetzt nicht was du mit AN2132 meist, aber ich verwende das 
Board von Brainstechnology, falls dir das was sagt.

von Sebastian (Gast)


Lesenswert?

Sorry, meinte den AN2131. Das ist sozusagen der Vorgänder vom FX2. Mit 
dem FX2 selbst habe ich noch nichts gemacht, nur mal die Datenblätter 
überflogen.
Hat das Braintechnology Board vielleicht einen EEPROM-Jumper?

von Tilo (Gast)


Lesenswert?

Hi

Was heißt macht nicht smher? Die Aussage ist so gut wie: "Das Internet 
ist kaputt".

Wird er überhaupt noch erkannt?
Wo hast du die IIC File hinkopiert? Denk daran, dass das erste Byte 
ID-Nummern für USB enthält. Die sind bestimmt nicht Teil deiner IIC 
File.

Eine möglichkeit könnte sein, die SCL und SCK Leitungen des EEprom mit 
einem Draht auf GND zu ziehen, den FX2 mit Cypress IDs starten lassen 
und dann etwas sinnvolles ins EEprom zu schreiben.

von Tilo (Gast)


Lesenswert?

Ok ich sehe gerade, du hast bei deinem Tool etwas angegeben, dass wie 
ID-Nummern aussieht, von dem her scheint dein Code schlecht zu sein.

Ich würde den Code lieber per USB laden (0xC0), dann gibts weniger 
Probleme.

von jan (Gast)


Lesenswert?

Tilo schrieb:
> Wird er überhaupt noch erkannt?

Nein er wird gar nicht mehr erkannt..


>
> Wo hast du die IIC File hinkopiert? Denk daran, dass das erste Byte
>

Hab die Datei mit Hilfe der CyConsole und der Schaltfläche "Lg EEPROM" 
in den FX2 geladen. Ja irgendwie muss ich den Ausgangszustand 
herstellen..

Hat jemand schonmal Erfahrungen damit gemacht?

> ID-Nummern für USB enthält. Die sind bestimmt nicht Teil deiner IIC
>
> File.
>
>
>
> Eine möglichkeit könnte sein, die SCL und SCK Leitungen des EEprom mit
>
> einem Draht auf GND zu ziehen, den FX2 mit Cypress IDs starten lassen
>
> und dann etwas sinnvolles ins EEprom zu schreiben.

von jan (Gast)


Lesenswert?

Was passiert denn, wenn ich den SDA oder SCL auf Masse ziehe? Bootet der 
dann wieder mit seiner Standard-Firmware?

von Christian R. (supachris)


Lesenswert?

Ja, tut er. Anscheinend ist dein Code nicht korrekt. Denkst du dran, 
über das Steuerbyte im EEPROM den I2C auf 400khz zu schalten? Sonst 
bootet der zu lange.

von jan (Gast)


Lesenswert?

nein, das habe ich nicht gemacht. Dazu müsste man meines wissens beim 
hextobix tool den Parameter -C 0x01 angeben. Kann das sein? Per default 
ist dieser nämlich immer 0x04...

Bis jetzt würde ich die IIC Datei folgendermaßen erstellen:

hextobix -I -F 0xC2 -C 0x01 meineDatei.hex

Habe in einer anderen Anleitung gelesen, dass man die SDA-Verbindung 
zwischen EEPROM und FX2 kappen muss, den FX2 anschließen und die 
Verbindung wieder schließen muss, um ihn wieder programmieren zu können. 
Reicht das Ziehen auf Masse wirklich aus?

von jan (Gast)


Lesenswert?

Nein, also bei mir wird er nicht mehr erkannt, auch wenn ich die SDA 
Leitung auf GND ziehe.. Ich traue mich einfach nicht, die Leitung durch 
zu schneiden.. gibts da nicht auch noch ne andere Lösung?

von Wolfgang R. (portside)


Lesenswert?

jan schrieb:
> Nein, also bei mir wird er nicht mehr erkannt

Diese Aussage bringt aboslut nix. Da auch nichts über das benutzte 
Betriebssytem berichtet wird liegt die Wahrheit ganz im Dunkeln.
Lade mal usbview und schau ob da was angezeigt wird. Wahrscheinlich ist 
bei deiner Aktion die Vendor und Produkt ID im EEprom abgeändert und das 
blööde Windoof meldet mangels fehlender inf Datei nichts mehr.
Steck das ganze an eine Linux Kiste und in den Logdateien gibts 
ausführliche Fehlermeldungen um das Problem einzukreisen.

von Jan (Gast)


Lesenswert?

Hier sind die syslog messages:

Der nicht funktionierende FX2:
Mar  2 10:08:00 Server02 kernel: usb 1-3: new high speed USB device 
using ehci_hcd and address 48
Mar  2 10:08:15 Server02 kernel: usb 1-3: device descriptor read/64, 
error -110


Der funktionierende FX2:
Mar  2 10:11:55 Server02 kernel: usb 1-3: new high speed USB device 
using ehci_hcd and address 53
Mar  2 10:11:55 Server02 kernel: usb 1-3: configuration #1 chosen from 1 
choice
Mar  2 10:11:55 Server02 kernel: usb 1-3: New USB device found, 
idVendor=04b4, idProduct=8613
Mar  2 10:11:55 Server02 kernel: usb 1-3: New USB device strings: Mfr=0, 
Product=0, SerialNumber=0


Da werd ich aber auch nicht schlauer draus. Er kann das Gerät anscheien 
nicht enumerieren..

von Tilo (Gast)


Lesenswert?

Hi

Was mich stutzig mach ist, dass beim Funktionierendem VID=PID=0x0000 
ist, was nicht sein sollte.

Hast du bei dem nicht funktionierenden die SDL Leitung mit GND 
verbunden?

von jan (Gast)


Lesenswert?

Tilo schrieb:
> Hast du bei dem nicht funktionierenden die SDL Leitung mit GND
>
> verbunden?

Ja habe ich. Dann habe ich ihn angeschlossen und er wurde trotzdem nicht 
erkannt.

von Tilo (Gast)


Lesenswert?

Hm, normalerweise geht das, da damit der Bus blockiert wird und der FX2 
das Rom nichts sieht. Andererseits tut das bei mir so gerade auch nicht.

Ich habe den Vcc Pin des Roms vom Board entlötet und den Pin mit einem 
Skalpell vorsichtig hochgebogen und nach dem Einstecken mit einem Jumper 
verbunden. Damit gings dann bei mir,

von Christian R. (supachris)


Lesenswert?

Auf dem Brain Board ist ein Pull-Widerstand für die EEPROM Adresse. Wenn 
du den gegen einen Jumper ersetzt kannst du den EEPROM damit 
deaktivieren. Und dann wird er wieder erkannt. Anscheinend hast du die 
ganzen Deskriptoren nicht korrekt eingetragen in die ASM Datei...

von jan (Gast)


Lesenswert?

Ja gut, jetzt erkennt er ihn wieder.

Ich schaffe es aber immer noch nicht, die iic-Datei zu ersetllen, damit 
die Firmware automatisch geladen wird.

hextobix -I -F 0xC2 -C 0x01 meineDatei.hex

-F 0xC2: Bringt ihn dazu, den Code im EEPROM zu benutzten.

-C 0x01: IIC bei 400 khz

Dann habe ich die Firmware um den Code erweitert:
#define FX2_RENUM   (1U<<1)
#define FX2_DISCON  (1U<<3)

if(USBCS & FX2_RENUM)
{
    // RENUM bit is set indicating that the uC should handle USB 
requests.
    // This happens if the program is loaded from EEPROM.
    // Disconnect, switch off RENUM and reconnect again to force the FX2
    // logic to handle USB requests.
    USBCS |=  FX2_DISCON;  SYNCDELAY;
    USBCS &= ~FX2_RENUM;   SYNCDELAY;
    USBCS &= ~FX2_DISCON;  SYNCDELAY;
}

Habe ich von Wolfgang Wiesers Homepage:
http://www.triplespark.net/elec/periph/USB-FX2/eeprom/

Daraus habe ich dann die IIC Datei erstellt.

Mache ich da was bei den Parameter-Angaben falsch?

von Tilo (Gast)


Lesenswert?

Warum nimmst du nicht mal Code aus den Beispielen von Cypress, lädst den 
zu erst per CyConsole, überprüfst ob dieser funktioniert und schreibst 
erst dann den Code ins EEPROM?
Wenn das funktioniert, kannst du mit eigenem Code weiter machen.

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.