Forum: FPGA, VHDL & Co. FPGA-bitfile in SPI Seriell Flash programmieren


von tequila (Gast)


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

von Christian R. (supachris)


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.

von Tequila (Gast)


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`?

von Lupinus Digitalus (Gast)


Lesenswert?

Servus,

ich weiss von anderen Herstellern wie Lattice, dass die schon komplette 
C-Sourcen für die Programmierung der FPGAs vom uC anbieten. Vielleicht 
gibts ja so etwas von Xilinx auch?

Gruss

Lupi

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


Lesenswert?

Lupinus Digitalus schrieb:
> Vielleicht gibts ja so etwas von Xilinx auch?
XAPP056, XAPP098 und ähnliche...

von Christian R. (supachris)


Lesenswert?

Tequila schrieb:
> Muss ich nur die echte Daten-bytes in flash programmieren?

Ja, nur die Nutzinformation.

von Tequila (Gast)


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?

von Anguel S. (anguel)


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

von Anguel S. (anguel)


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

von tequila (Gast)


Lesenswert?

danke euch alle!^^

schönes WE!

Lg Tequila

von DT (Gast)


Angehängte Dateien:

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.

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.