Forum: FPGA, VHDL & Co. SPI Flash M25P80 mit Lattice ECP2 20


von Ber (Gast)


Lesenswert?

Hallo,

ich verwende einen Lattice ECP2 20 und habe ein SPI Flash vom Typ M25P80 
angeschlossen. Nun habe ich aber Probleme in dem Flash Daten 
abzuspeichern.
Ich möchte ca. 100 Byte dort ablegen.
Im Eclipse habe ich den Baustein SPI Flash ROM (3.1) angelegt, habe die 
Einstellungen mal auf default gelassen, als Basisadresse 0x01000000.
Als Adresse verwende ich die letzte Bank mit der Startadresse F0000h.
Also schreib ich auf meinen AdressPointer Basisadresse + Startadresse 
und dort dann meine Daten rein. Wenn ich diese Daten dann wieder 
auslesen möchte stehen da nur irgendwelche Werte drinnen, also nehme ich 
an, dass das Reinschreiben nicht funktioniert.
Hat jemand vielleicht eine Idee?

Herzlichen Dank,
Ber

von Ber (Gast)


Lesenswert?

Hallo,

hat keiner eine Idee?


Herzlichen Dank
Ber

von cfgardiner (Gast)


Lesenswert?

Ber,

ich gehe davon aus, Du hast eine mico32 (oder mico8?) Umgebung 
aufgebaut. Schreiben zum Flash ist etwas komplizierter als Schreiben zum 
SRAM zum Beispiel. Normalerweise braucht mein hier einen kleinen 
'Flasher'. Wenn ich mich recht entsinne gibt es Beispiel Code für einen 
Flasher (möglicherweise aber Parallel) in einem der mico32 Demo 
Platforms.

Ich würde vorschlagen, entweder eine kurze Simulation aufsetzen (mit 
einem beliebigen Flash Model) oder mit Reveal die Flash Ports tracen und 
schauen, ob Dein Design alle Befehlsfolgen, Timings etc. einhält. 
Ausmessen mit einem LA geht natürlich auch.

Eine Ferndiagnose ist sonst schwierig.

Grüße,
Charles

von Ber (Gast)


Lesenswert?

Hallo Charles,

vielen Dank für deine Antwort.
Ja, ich verwende einen Mico32 in meinem ECP2.
Den Flash Zugriff mache ich über folgende Routine die ich in einem 
anderen Thread gefunden habe:

unsigned int *baseram;
baseram = 0x Deine Basisadresse;
*(baseram+offset) = ein Byte (bzw. 32 Bit) zum Schreiben;
ein Byte (bzw. 32 Bit) zum Lesen = *(baseram+offset);

Die Hardware auf der ich arbeite hat auch schon funktioniert, nur die 
entsprechende Software ist abhanden gekommen.
Nach Rücksprache mit dem Schreiber der abhanden gekommenen Software hat 
er genau so eine Routine zum Schreiben und Lesen des Flashs verwendet.

Habe jetzt nur keine Idee, wieso das nicht mehr so funktioniert.

Herzlichen Dank
Ber

von cfgardiner (Gast)


Lesenswert?

Hallo Ber,

die Code Zeilen, die Du gepostet hast, scheinen mir reichlich wenig. Es 
ist jetzt eine Weile her seitdem ich selber etwas mit dem mico32 gemacht 
habe, aber ich meine mich zu entsinnen, dass jeder Wishbone Component 
auch einen Treiber hat. Jeder Treiber hat auch so etwas wie eine init 
routine, die vom Boot Code des mico32 aufgerufen werden muss.

Ich weiss nicht auswendig, ob der SPI Flash ROM (3.1) core selbständig 
alle write enable (WREN), page program (PP), sector erase (SE) etc. 
Befehle an den Flash schickt oder ob hierfür Treiber Methoden aufgerufen 
werden muessen. Mueste noch geklärt werden.

Übrigens, die Aussage des Schreibers würde ich zuerst einmal mit 
Vorsicht geniessen. Viele Entwickler haben leider keine Lust sich mit 
Ihren Altlasten (Altsünden) wieder zu befassen. Oft heisst es, erst 
einmal abwimmeln. Erlebe ich ständig.

Wenn Du sagst, dass das ganze mal gelaufen ist, gibt es irgendwo bei 
Euch noch ein Program Image, das noch funktionsfähig ist? Was genau hast 
Du in der funktionierenden Hardware geändert (oder hast Du überhaupt 
etwas geändert)?

Grüße,
Charles

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.