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
> 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... :-/
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.
>> 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?
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 ?
> 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
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.
> 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?
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...
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.
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...
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.
> 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 ?
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?
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...