www.mikrocontroller.net

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


Autor: Ber (Gast)
Datum:

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

Autor: Ber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hat keiner eine Idee?


Herzlichen Dank
Ber

Autor: cfgardiner (Gast)
Datum:

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

Autor: Ber (Gast)
Datum:

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

Autor: cfgardiner (Gast)
Datum:

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

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.