www.mikrocontroller.net

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


Autor: Max_F (Gast)
Datum:

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

Autor: SteKu (Gast)
Datum:

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

Autor: Georg A. (Gast)
Datum:

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

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.