Forum: FPGA, VHDL & Co. Paralleles Flash mit Spartan-3AN


von klaus (Gast)


Lesenswert?

Hallo zusammen,

ich hoffe ihr könnt mir helfen, ich bin etwas ratlos. Ich arbeite mit 
dem Spartan-3AN Starter-Kit von Digilent und möchte das parallele NOR 
Flash nutzen.

Mein Versuchsaufbau dazu ist:

BRAM Adressen: 0x0000.0000 - 0x0000.1fff
NOR FLASH Adressen: 0x8700.0000 - 0x87ff.ffff

Board:
J26: M0 set, M1 free, M2 set
J46: free

Meine Applikation (ein LED Lauflicht) habe ich per Linker-Skript 
komplett in das BRAM gelegt. Der Bitstream ist mit dieser Applikation 
initialisiert.

Wenn ich nun in XPS "Device Configuration" -> "Download Bitstream" 
ausführe läuft das Programm. "Device Configuration" -> "Program Flash 
Memory" ist zwar erfolgreich ("Flashwriter completed successfully"), 
aber der FPGA scheint weder die Konfiguration zu laden (DONE LED bleibt 
dunkel) noch das Programm auszuführen.


Ich hoffe jemand weiß Rat!
klaus

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

> J26: M0 set, M1 free, M2 set
Das ist m.W. der JTAG Konfigurations-Modus.

Hier solltest du schon auf den Parallelen Master umschalten...
Ich tippe auf:  M0 set, M1 set, M2 free
Aber das dürfte auch im Manual stehen...  :-/

von klaus (Gast)


Lesenswert?

Danke, ich habs mal probiert. Bei dieser Einstellung konfiguriert sich 
das FPGA aber aus dem seriellen SPI flash. Die Jumper aktivieren 
Pull-Down Widerstände, sodass ein gesetzter Jumper afaik einer 0 
entspricht. Ich benutze den Schaltplan des Demo-Boards und die da 
angegebenen Jumper-Settings. Laut dem wäre das mit M1 set und M2 set 
schon so in Ordnung.

Da ich auch schon geprüft habe, dass die Konfiguration wirklich im PROM 
steht, bin ich ratlos warum es nicht klappt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>> J26: M0 set, M1 free, M2 set
:
> Ich benutze den Schaltplan des Demo-Boards und die da angegebenen
> Jumper-Settings.
> Laut dem wäre das mit M1 set und M2 set schon so in Ordnung.
Und, hast du das auch probiert?

von klaus (Gast)


Lesenswert?

Ich sehe gerade ich habe mich verschrieben, ich meinte M0 set und M2 set 
(Master BPI Mode). Aber probiert habe ich auf jeden Fall das richtige 
Jumper-Setting, aber inzwischen einfach auch alle anderen Möglichkeiten 
:-) M1 set und M2 set ist der Master SPI Mode und der funktioniert auch 
wie gedacht, das habe ich bereits getestet.

Was ich noch nicht geschrieben habe, was vielleicht auch wichtig ist, 
wäre folgendes: Ich habe einfach die Datei 
"/implementation/download.bit" die vom XPS erzeugt wird geflashed. Da 
ich darin die Start-Marker der Konfiguration gesehen habe FF FF ... AA 
99 denke ich dass das so funktionieren müßte.

Oder was habe ich übersehen ? Muss man "download.bit" noch irgendwie 
weiterverarbeiten bevor man sie flashen kann ? Wie ist das mit 
Bit-Swapping in diesem Fall ?

von Duke Scarring (Gast)


Lesenswert?

> Oder was habe ich übersehen ? Muss man "download.bit" noch irgendwie
> weiterverarbeiten bevor man sie flashen kann ?

Muss man für den Flash nicht ein .mcs-File generieren?

Duke

von Christian R. (supachris)


Lesenswert?

Duke Scarring schrieb:
>> Oder was habe ich übersehen ? Muss man "download.bit" noch irgendwie
>> weiterverarbeiten bevor man sie flashen kann ?
>
> Muss man für den Flash nicht ein .mcs-File generieren?
>
> Duke

Ja muss man. Die Platform Flashes wollen mit einem mcs gefüttert werden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Impact --> Generate Prom File

von klaus (Gast)


Lesenswert?

> Ja muss man. Die Platform Flashes wollen mit einem mcs gefüttert werden.

Ich benutze das NOR flash, bzw. konkret das M29DW323, welches auf dem 
Starter Kit verbaut ist, nicht das Platform Flash. Zum Download habe ich 
das XPS verwendet.

Okay, das mit dem MCS Format werde ich jetzt testen. Was passiert denn 
zusätzlich bei der Umwandlung ins MCS Format ? MCS ist ja praktisch das 
Intel Hex Format, soviel ist mir bekannt - werden hierbei vielleicht 
noch bits geswapped ? Ausgangspunkt für diese Umwandlung ist aber schon 
die "download.bit" oder?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Das ist aber offenbar etwas aufwendiger:
http://www.xilinx.com/products/boards/s3astarter/reference_designs.htm#parallel_flash_programmer

Du kannst das NOR-Flash gar nicht "einfach so" programmieren...

von Christian R. (supachris)


Lesenswert?

Ja, bei Generate PROM File wird das .bit File in ein .mcs File 
umgewandelt. Das Bit File kann man nur direkt in den FPGA laden, das 
macht XPS. Da wird ja beim Start jeder Session das Bit File in den FPGA 
geldaden...

von klaus (Gast)


Lesenswert?

Hmmm, alles sehr strange...

Also ich habe jetzt mein "download.bit" genommen und mit Impact in ein 
MCS File verwandelt. In diesem MCS File waren die bits geswapped, und 
ein kleiner "Header" (der im .BIT file vorhanden ist) wurde entfernt. 
Dieses MCS File habe ich dann mit einem anderen Tool wieder ins binäre 
rückübersetzt und mit XPS in das NOR flash geschrieben.

Richtig geraten: Geht wieder nicht...


> Du kannst das NOR-Flash gar nicht "einfach so" programmieren...

Mit XPS geht das ganz gut. Da gibts "Device Configuration" -> "Program 
Flash Memory". Wenn man sonst nichts umstellt, schreibt das Tool einfach 
die Datei die man dabei angibt 1:1 ins NOR flash. Das habe ich auch 
geprüft, die Programmierung vom Flash funktioniert. Nur die automatische 
Konfiguration aus dem selbigen will nicht klappen.

von Christian R. (supachris)


Lesenswert?

klaus schrieb:
> Hmmm, alles sehr strange...
>
> Also ich habe jetzt mein "download.bit" genommen und mit Impact in ein
> MCS File verwandelt. In diesem MCS File waren die bits geswapped, und
> ein kleiner "Header" (der im .BIT file vorhanden ist) wurde entfernt.
> Dieses MCS File habe ich dann mit einem anderen Tool wieder ins binäre
> rückübersetzt und mit XPS in das NOR flash geschrieben.
>
> Richtig geraten: Geht wieder nicht...


Hm...will XPS denn kein MCS File, wenn es den Flash direkt programmieren 
soll?

Und kann der Spartan überhaupt aus einem x-belibigen NOR-Flash booten? 
Ich meine, BPI geht nur vom Xilinx Platform Flash....müsste aber auch 
erst nochmal die Doku raussuchen...ich hatte das so verstanden, dass das 
Design und der Bootloader im Platform Flash ist, und dann das große 
Programm aus dem Flash saugt. Die FPGA Konfig im NOR Flash...hmm...

von Christian R. (supachris)


Lesenswert?

Stimmt soweit, der kann von beliebigen parallelen Speichern booten. Aber 
da sind jede Menge Einstellungen, die zu tun sind (Timing...), 
vielleicht passt da was nicht zusammen.

von klaus (Gast)


Lesenswert?

> Hm...will XPS denn kein MCS File, wenn es den Flash direkt programmieren
> soll?

Ne, als Vorauswahl bietet das Tool SREC und ELF. Es bietet auch noch die 
Option eine Datei vor dem Upload ins SREC Format umzuwandeln. Das Tool 
scheint davon auszugehen, dass zunächst ein SREC-Bootloader gestartet 
wird, der dann den Rest erledigt. Grundsätzlich schreibt es einfach die 
Dateien so wie sie sind ins NOR Flash. Man muss vorher aber eine 
funktionierende Konfiguration ins FPGA bringen damit das geht.

> Stimmt soweit, der kann von beliebigen parallelen Speichern booten.
> Aber da sind jede Menge Einstellungen, die zu tun sind (Timing...),
> vielleicht passt da was nicht zusammen

Dem würd ich gerne nachgehen. In welche Doku hast du geschaut ?

von Christian R. (supachris)


Lesenswert?

klaus schrieb:

>
> Dem würd ich gerne nachgehen. In welche Doku hast du geschaut ?

UG332

von klaus (Gast)


Lesenswert?

Okay, danke dir.

Ich habe mir gerade noch überlegt: Nach dem Reset leuchtet die INIT LED, 
d.h. der INIT Pin am FPGA ist Low. Laut Manual kommt dafür u.a. auch ein 
CRC Fehler in der Konfiguration in Frage. Evtl. liegt ja hier das 
Problem.

Weiß jemand wie sich das mit dem CRC verhält? Wie kann man den im 
Bitstream prüfen, wie sieht das .BIT Dateiformat aus?

von klaus (Gast)


Lesenswert?

Okay, des Rätsels Lösung, falls jemand nochmal dieses Problem haben 
sollte:

Wenn man das NOR flash nutzen möchte, muss man bit-swapping (Bits in 
einem Byte spiegeln) UND byte-swapping (je 2 Bytes tauschen) anwenden.

Man muss erst mit Impact die erzeugte .bit Datei in eine .bin Datei 
konvertieren und bit-swapping dabei aktivieren. Anschließend muss diese 
.bin Datei mit einem eigenen kleinen Skript oder Programm 
ge-byte-swapped werden.

Dann kann man das ganze via SDK ins NOR flash programmieren...

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.