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