FPGA-bitfile in SPI Seriell Flash programmieren

Gast #2118122
Lesenswert?

Hallo zusammen,

wie kann man FPGA-bitfile interpretieren dann anschließend über 
Mikrocontroller in SPI-Seriell Flash programmieren? (danach kann FPGA 
selbst mit Master SPI-Mode programmiert werden)

Ich hab den xillinx spartan 3A, und SST25v-seriellFlash. So ein Vorgehen 
kann ich mir vorstellen:

1. bitgen :            --> *.bit file
2. promgen: *.bit file --> *.bin file oder *.msc file
3. bin2hex: *.bin      --> *.hex (intel Hex)

was muss ich mit diesen msc oder hex file machen? Wie die Daten in 
hexfile, mcs-file in dem seriell Flash abgespeichert werden?

danke im vorraus!

Tequila
#2118222
Lesenswert?

Bin2Hex brauchst du nicht, das mcs File ist im Intel Hex Format. Das 
Format ist überall genauestens erklärt, musst du nur auslesen und in den 
Flash schreiben. Kannst natürlich auch hex2bin nehmen, dann kannst du 
das bin File 1:1 in den Flash bringen. Ansonsten ist erst bitgen und 
dann promgen schon richtig. Bitgen ist ja Teil des ISE Design Flows, 
Promgen ist bei Impact dabei. Kann promgen denn überhaupt bin? Hab ich 
noch gar nicht gesehn.
Gast #2118342
Lesenswert?

danke Christian für die antwort!^^

Christian R. schrieb:
> Kann promgen denn überhaupt bin?

Ja kann er, bei impact findet man nur Hex output-file. Wenn mann über 
Befehl-promt, Befehl fenster ihn aufruft, gibt option für 
BIN-outputfile.

http://www.xilinx.com/itp/xilinx6/books/data/docs/dev/dev0131_19.html

Wie kann man mit µC den hex(oder bit)- file in Flash bringen? Ich hab 
schon den flash-driver, er kann den flash byteweise programmieren.

Meine Vorstellung:

1. Weil in intel-hexfile gibt noch Intelhex-Datensatzformat(also nicht 
nur die echte Data sondern auch information, Datensatzanfang mit ":" 
.....).
Muss ich nur die echte Daten-bytes in flash programmieren?
2. Wie kann ich den Hexfile vom PC über UART zum µC? Normal Terminal 
program kann nur ein string über Eingabenfenster schicken, oder`?
Gast #2124958
Lesenswert?

Christian R. schrieb:
> Ja, nur die Nutzinformation.

danke euch alle!

in *.BIN - file sehe ich :

ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
aa 99 30 a1 00 07 20 00 31 61 09 ee 33 21 3c 0f
31 a1....
..............
30 a1 00 0d 20 00 20 00 20 00 20 00 20 00 20 00
20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00
20 00 20 00

Soll ich ab "aa"-Byte bis zum Ende-Byte "00" in SPI-Flash ablegen? Und 
ab SPI-Address 0?

Habt ihr docu, indem beschrieben wird, wie der FPGA die Konfigdaten von 
SPI-Flash holt?
#2125288
Lesenswert?

Tequila schrieb:
> Soll ich ab "aa"-Byte bis zum Ende-Byte "00" in SPI-Flash ablegen? Und
> ab SPI-Address 0?

Die vielen FFs sind das sog. Dummy Word, das vor dem Synchronization 
Word (AA99..) im Bitstream kommt. Siehe dazu S. 332 in UG332 ;) Ich 
würde die FFs also mit ins SPI-Flash packen.

> Habt ihr docu, indem beschrieben wird, wie der FPGA die Konfigdaten von
> SPI-Flash holt?

Hast Du den UG332 schon durchgeschaut?

Grüße,
Anguel
#2140477
Lesenswert?

Tequila schrieb:
> Christian R. schrieb:
>> Kann promgen denn überhaupt bin?
>
> Ja kann er, bei impact findet man nur Hex output-file. Wenn mann über
> Befehl-promt, Befehl fenster ihn aufruft, gibt option für
> BIN-outputfile.

Übrigens habe ich jetzt festgestellt, dass auch Bitgen anscheinend 
direkt BIN Dateien erzeugen kann (siehe Optionen in der IDE), so dass 
man gar kein Promgen braucht. Siehe auch hier:
http://www.xilinx.com/support/answers/14468.htm

Grüße,
Anguel
Gast #2149000
Lesenswert?

Kleiner Tipp:

In einem Design habe ich folgendes getan:

Der SPI des µCs wird mit 2 CSs an den FPGA gelegt. Im Flash befindet 
dich über JTAG programmiert eine Art Bootloader-Image ab Adresse 0. Über 
das eine CS erfolgt der Datenaustausch mit dem FPGA, über das andere CS 
erfolgt der direkte zugriff durch den FPGA auf den Flash.

Die eigentliche Anwendungs-Image (oder auch mehrere) liegt (liegen) dann 
in höheren Speicherbereichen des Flashs. Über die SPI löse ich dann ein 
ReBoot des FPGAs an der gewünschten Flashadresse aus.

Der ReBoot ist recht einfach mit dem im Anhang befindlichen picoboot zu 
realisieren.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren