Gast
#1595553
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!