Forum: FPGA, VHDL & Co. AVR - FPGA Image-Datei direkt in den Flash einbinden


von dg1vs (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem. Ich möchte direkt in das Flash-Programm des 
AVR ein bit-Datei für einen FPGA einbinden und diese bit-Datei dann 
direkt beim Starten in den FPAG laden. Der eigentliche FPGA-Ladevorgang 
funktioniert soweit, bedeutet ich kann von SD-Karte lesen und 
entsprechend das FPAG befüllen.
Ich scheitere nun am Einbinden direkt in das AVR-Flash-File.

https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Dateien_direkt_im_Flash_einbinden

und die zusätzlichen Links habe ich gesehen und gelesen. Aus der 
Bit-Datei ein o-File zu generieren funktioniert. Meine Fragen zielen in 
die Richtung, wie ich dem AVR-Studio mitteile, dass es dieses 
zusätzliche object-File gibt und es entsprechend eingebunden werden 
muss. Oder muss ich komplett auf eigene Makefiles umsteigen und kann 
AVR-Studio nicht nutzen.

Ich benutze AVR-Studio Version 7

Grüße Karsten

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


Lesenswert?

Hast du denn einen AVR im FPGA?
Wenn ja: welchen Core?

von Karsten S. (dg1vs)


Lesenswert?

Hallo Lothar,

ok, doch was vergessen zu schreiben.

Ich habe einen AVR und einen "kleinen" FPGA. Der AVR sorgt für das 
Runterspielen des bit-Files. Aktuell holt er das bit-file von der 
SD-Karte. Ich möchte die Kombi (AVR-FPGA) aber auch ohne SD-Karte 
betreiben können und ein default bit-file aus dem Flash des AVR holen. 
Platz ist im AVR noch.

Grüße Karsten

: Bearbeitet durch User
von T.U.Darmstadt (Gast)


Lesenswert?

Schau mal nach "passive serial mode" in den programming options. Der 
FPGA muss dazu entsprechend verdrahtet worden sein, damit er an seinen 
Config-Eingängen einen Datenstrom passiv empfangen kann. Im Gegensatz 
zum "acitve serial mode" wo er sich das selber holen kann.

von Seppl (Gast)


Lesenswert?

Ich denke der TO will einfach nur das config File des FPGAs im Flash als 
Daten ablegen. Ich denke es ist eine generelle Frage:

Wie kann ich Binärdaten in den Flash eines AVRs ablegen und anschließend 
vom Programm aus zugreifen?

Seppl

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


Lesenswert?

Karsten S. schrieb:
> Platz ist im AVR noch.
Reicht der aus? Bitfiles sind jetzt ja nicht für ihre "Winzigkeit" 
bekannt...

Seppl schrieb:
> Wie kann ich Binärdaten in den Flash eines AVRs ablegen und anschließend
> vom Programm aus zugreifen?
Dafür gibt es Userguides für die jeweilige FPGA-Familie. Z.B. den hier 
https://www.xilinx.com/support/documentation/user_guides/ug380.pdf
Und dort suchst du mal nach "microcontroller"...

Ich verwende die XAPP058 und den SVF-Player, der dort zu finden ist, und 
"spiele" damit die JTAG-Programmierdatei ab. Das ist natürlich wegen des 
Textformats der SVF-Datei extrem uninteressant. Aber du könntest den 
Player ja auf dem PC laufen lassen und dann nur die Binärdaten ablegen.

von Karsten S. (dg1vs)


Lesenswert?

Lothar M. schrieb:
>> Platz ist im AVR noch.
> Reicht der aus? Bitfiles sind jetzt ja nicht für ihre "Winzigkeit"
> bekannt...
Ich nutze einen AVR 1284 mit 128 KByte und einen XC3S50A (ca. 54 KByte 
bit File), das geht sich also aus, wenn das eigentliche Programm nicht 
zu groß wird.

Seppl schrieb:
> Wie kann ich Binärdaten in den Flash eines AVRs ablegen und anschließend
> vom Programm aus zugreifen?

Genau, und vor allem wie funktioniert es unter  Nutzung von AVR-Studio 7 
möglichst einfach? Ich habe keine Möglichkeit gefunden einfach 
zusätzliche o-Files anzugeben.

Grüße Karsten

von Sigi (Gast)


Lesenswert?

Kannst du dir nicht einfach aus deinem Bitfile
ein Assemblermodul mit entsprechendem Datenbereich
erzeugen? Dies liese sich doch einfach in dein
Projekt einbinden.

von Stefan E. (sternst)


Lesenswert?

Karsten S. schrieb:
> Genau, und vor allem wie funktioniert es unter  Nutzung von AVR-Studio 7
> möglichst einfach? Ich habe keine Möglichkeit gefunden einfach
> zusätzliche o-Files anzugeben.

Wenn dafür nichts speziell vorgesehen ist (habe gerade kein Studio zur 
Hand um nachzuschauen), dann halt einfach bei den Linker-Einstellungen 
unter Miscellaneous als "Option" eintragen. Die zusätzliche Objekt-Datei 
muss ja nur in der Linker-Kommandozeile mit auftauchen.

von berndl (Gast)


Lesenswert?

Bei Xilinx gibt es irgendwo ein PERL-Skript, das aus einer .bit ein .c 
macht. Es wird also 'nur' ein grosses Array in C erzeugt. Damit kannst 
du einfach darauf zugreifen, einen Player fuer die SD-Karte hast du ja.
Fuer Details muesste ich mal "auf Arbeit" nachschauen, ist schon ein 
paar Jahre her...
Das FPGA-Image koenntest du auch noch komprimieren (in ISE), das bringt 
meist auch noch ein paar KB Reduzierung.
Die von Lothar genannte XAPP ist ein guter Einstieg dafuer.

von berndl (Gast)


Lesenswert?

berndl schrieb:
> Bei Xilinx gibt es irgendwo ein PERL-Skript, das aus einer .bit ein .c
> macht.

gefunden, das Skript heisst 'bitformat.pl', schau mal nach der XAPP502. 
Damit bin ich damals unterwegs gewesen.

von Martin S. (strubi)


Lesenswert?

Moin,

der einfachste Weg ist IMHO einfach direkt das BIT-File per Serial-Slave 
(SPI) aufs FPGA zu spielen.
Das Bitfile in ein kompilierbares byte-array umzuwandeln ist dann nur 
noch eine Fingerübung. Oder man nudelt was mit objcopy..

von Duke Scarring (Gast)


Lesenswert?

dg1vs schrieb:
> Meine Fragen zielen in
> die Richtung, wie ich dem AVR-Studio mitteile, dass es dieses
> zusätzliche object-File gibt und es entsprechend eingebunden werden
> muss.
Wenn Du beim AVR-Studio bleiben willst, würde ich das Bitfile in .h oder 
.c-Quelltext umwandlen.

Vielleicht kannst Du Dir auch hier nochwas abgucken:
https://www.mikrocontroller.net/articles/FPGA_Konfiguration_mit_AVR_Butterfly

Duke

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.