Forum: FPGA, VHDL & Co. Probleme mit Microblaze und parallelem Flash


von Max_F (Gast)


Lesenswert?

Hallo zusammen!
Ich habe da ein Problem. Ich benutze ein Spartan 3ADSP Starter Kit von 
Avnet. Auf dem Board ist neben einem SPI-Flash auch ein paralleles Flash 
von Intel drauf (28F128J3). Ich habe mir einen Microblaze mit Hilfe des 
Wizards in EDK 10.1 erstellt und mir einen kleinen Bootloader 
geschrieben, welcher über die serielle Schnittstelle ein SREC empfängt. 
Funktioniert eigentlich alles so weit ganz gut. Nun würde ich jedoch das 
parralle Flash beschreiben (genau genommen das im Ram liegende, 
decodierte SREC im Flash speichern).
Die Treiber für das Flash von Intel und Xilinx sind zu groß für das BRAM 
(wo der Bootloader liegt). Ich habe nun also versucht den Flash gemäß 
den Befehlen aus seinem Datenblatt anzusprechen.
Das Wizard "erzuegt" ja einen xps_emc und die hoffentlich passenden 
Constraints (das Flash mapped er ab Adress 0x87000000).
Wenn ich nun im C-Code folgendes mache
volatile unsigned char x;
*(unsigned char*)0x87000000 = 0x90;
x = *(unsigned char*)0x87000000;
liefert er mir die Manufacture ID. Soweit so gut. Das stimmt ja auch. 
Aber egal von welcher Adresse ich dann lese bekomm ich nur die 
Manufacture IS zurück. Gleiches passiert beim schreiben. Angenommen ich 
schreibe mit Hilfe der Befehle aus dem Flash-Datenblatt 4 Character an 4 
Stellen im Flash (0x87020000, 0x87020001, 0x87020002, 0x87020003) und 
lese diese 4 Stellen dann aus, bekomm ich 4 mal den zuletzt 
geschriebenen Character geliefert.
Kann mir jemand sagen, was ich falsch mache?
Vielen Dank schon mal im Voraus!

von SteKu (Gast)


Lesenswert?

Hallo,
Du mußt das Flash immer Blockweise beschreiben. Ausserdem solltest du 
den zu beschreibenen Block zunächst löschen, da nur NULLEN geschrieben 
werden können. Schau mal ins Datenblatt. Wieso benutzt du nicht die 
XFlash Lib?

von Georg A. (Gast)


Lesenswert?

Das Schlüsselwort "volatile" bei allen Zugriffen (Lesen und besser auch 
beim Schreiben) könnte helfen...

Sonst könnte es noch ein Problem mit dem Mapping der Adress-LSBs geben. 
Ist das Flash 8 oder 16 Bit breit?

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.