FPGA Bootloader in SPI-Flash

OP (Firma: Ucore Fotografie www.ucore.de) Persönliche Seite #3189300
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
#3189335
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.

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