Forum: FPGA, VHDL & Co. FPGA Bootloader in SPI-Flash


von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Hallo zusammen,
ich möchte einen FPGA (Spartan 3E) im Betrieb umkonfigurieren können. Am 
Spartan 3E hängt ein SPI-Flash aus dem der FPGA beim Starten seine 
Konfiguration erhält. Im System ist ebenfalls ein Microcontroller 
vorhanden.

Die Idee war: In der FPGA-Konfig. eine "SPI-Weiche" zu realisieren, über 
die der MCU (wenn der FPGA "gebootet" hat) das Flash löschen und 
schreiben kann. Danach FPGA "resetten" und er holt sich seine neue 
Konfig.

Aber was passiert, wenn beim Schreibvorgang ins Flash ein fehler 
passiert? Dann ist die "schöne SPI-Weiche" weg und ich kann den Flash 
nur noch über JTAG neu programmieren.

Die Idee war nun einen Sektor im Flash zu schützen (write protect). Und 
genau in diesen Sektor die SPI-Weiche zu legen, so dass diese niemals 
überschrieben werden kann. Ähnlich zu einem Bootloader beim 
Mikrocontroller.

Daher die Frage: Geht so etwas prinzipiell beim Spartan 3E oder ist das 
ausgeschlossen (wenn ja, warum)? Bzw. gibt es andere (einfachere) 
Lösungen?

Edit: Ach so, hatte ich vergessen zu erwähnen: Es existiert bereits eine 
SPI-Schnittstelle zwischen MCU und FPGA, deshalb der Begriff 
"SPI-Weiche". Ob die SPI-Signale zum Flash oder für interne Zwecke des 
FPGAs genutzt werden sollen, soll über eine zusätzliche IO-Leitung 
zwischen den beiden Chips eingestellt werden. Dennoch müssen sowohl 
"FPGA-Normalprogramm" und "FPGA-Bootloader" die drei SCK-, MOSI- und 
MISO-Leitungen gemeinsam benutzten können.


Danke & schöne Grüße,
Alex

von Christian R. (supachris)


Lesenswert?

Das wird nicht klappen, dazu müsstest du das Design partitionieren, was 
meines Wissens vom Spartan 3e nicht unterstützt wird. Abhilfe schafft da 
nur Multiboot mit Fallback, ist aber erst ab Spartan 6 in den Xilinx 
FPGAs drin. Eventuell auch beim Extended Spartan 3A. Aber der 3e kann 
das nicht, daher ist das mit Vorsaicht zu genießen.

von Duke Scarring (Gast)


Lesenswert?

Mit Multiboot kenne ich mich nicht aus, was aber klappen müßte, wäre 
eine Neukonfiguration durch den Mikrocontroller. Wie das prinzipiell 
funktioniert, dazu gibt es hier im Wiki ein paar Artikel:

http://www.mikrocontroller.net/articles/Low_Cost_FPGA_Konfiguration
http://www.mikrocontroller.net/articles/FPGA_Konfiguration_mit_AVR_Butterfly

Duke

von Christian R. (supachris)


Lesenswert?

Achso, klar mit einem externen µC über Slave Serial natürlich das 
einfachste. Oder die SPI leitungen parallel an den µC anschließen. ich 
dachte jetzt er hat einen Softcore.

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.
Lade...