Forum: FPGA, VHDL & Co. Firmware Updates für FPGA


von HB (Gast)


Lesenswert?

Hallo Leute,

folgendes Szenario:
ein Xilinx FPGA und der passende Platform Flash Prom sind vorhaneden. Im 
Normalfall schreibe ich mit JTAG die Konfigurationsdaten in das Flash 
Prom, dieser "konfiguriert" damit den FPGA,... beim Systemstart z.B.

Um später "Firmwareupdates" durchführen zu können beabsichtige ich, dass 
der FPGA die Daten im Prom über JTAG überschreiben kann... also: neue 
Firmware wird vom PC empfangen und dann direkt in den Prom geschrieben.

Hat jemand sowas schon mal gemacht? Gibt es dazu App Notes von Xilinx 
oder sowas??? Ehfahrungen?

Viele Grüße
HB

von Falk (Gast)


Lesenswert?

xapp 058

Geht, aber ich würde das nicht über das FPGA selber machen. Wenn dabei 
nämlich was schief geht, zuckt das FPGA nie mehr. Besser einen separaten 
"Konfigurator" verwenden.

MFG
Falk

von J. S. (engineer) Benutzerseite


Lesenswert?

Gemacht habe ich das bisher nur über uc von Aussen. Ich kann mie 
vorstellen, daß Dein FPGA einen JTAG Core benötigt und Du irgendwie die 
Umschaltung des JTAG-Anschlusses für das Flash hinbekommen musst - es 
muss ja einmal auf den externen und einmal auf Deinen JTAG reagieren.

Und du musst dir überlegen, wie du einen Abbruch der Kommunikation 
abfängst: Wenn du direkt beim Empfang der Daten das flash überschreibst 
und dann ein Image nur halb empfangen hast, hast du nichts mehr zum 
booten. Du brauchst also einen Zwischenspeicher, würde ich mal sagen.

Nächstes Problem: Reset! Der FPGA muss einen Reset ausführen. Der Pin 
dafür ist aber erst nach Konfiguration valid. Du musst also dir also 
eine sichere pullup-Lösung einfallen lassen, sonst kommt da garnichts 
hoch.

von HB (Gast)


Lesenswert?

Nehmen wir an, ich habe einen FPGA mit funktionierender Konfiguration, 
die ich quasi ab Werk ins Platform Flash eingespielt habe. Auf dem Bord 
befinden sich nur FPGA und Platform Flash und ich will die "firmware" 
des FPGA updaten. Mir stehen aber nur Ethernet, USB oder ähnliches zur 
Verfügung, weil das Update direkt beim Kunden gemacht werden soll, ohne 
das Produkt aufzuschrauben.

Ideen?

von Falk (Gast)


Lesenswert?

@HB

>Nehmen wir an, ich habe einen FPGA mit funktionierender Konfiguration,
>die ich quasi ab Werk ins Platform Flash eingespielt habe. Auf dem Bord
>befinden sich nur FPGA und Platform Flash und ich will die "firmware"
>des FPGA updaten. Mir stehen aber nur Ethernet, USB oder ähnliches zur
>Verfügung, weil das Update direkt beim Kunden gemacht werden soll, ohne
>das Produkt aufzuschrauben.

Nimm nen kleinen uC mit USB/Ethernet/whatever Interface und programmiere 
xapp 058 rein. Ist wasserdicht.

MFG
Falk

von cholertinu (Gast)


Lesenswert?

Du kommst um den am FPGA vorbei geführten Programmierpfad direkt ins 
Platform Flash nicht herum.

Ich würde es mit einem uC machen, wie von Falk beschrieben.

Das Gerät ist im Normalbetrieb Stand-alone?

von HB (Gast)


Lesenswert?

Ja...standalone!

Wäre es eventuell ne Idee, einen zweiten Platform Flash zu verbauen, in 
dem eine sichere, lauffähige Version der FPGA Konfiguration 
abgespeichert ist? Der erste Platform Flash kann durch USB, Ethernet 
oder sowas das im FPGA entsprechend implementiert ist neu geflasht 
werden... geht dabei irgendetwas schief und der FPGA ist nicht in der 
Lage zu "booten" dann wird nach einer gewissen Zeit diese sichere Konfig 
eingespielt.

von Falk (Gast)


Lesenswert?

@HB

>Wäre es eventuell ne Idee, einen zweiten Platform Flash zu verbauen, in
>werden... geht dabei irgendetwas schief und der FPGA ist nicht in der
>Lage zu "booten" dann wird nach einer gewissen Zeit diese sichere Konfig
>eingespielt.

Denkbar. Die neueren  FPGAs (S3 & Co) unterstützen sogar mehrere 
Konfigurationen in einem Flash. Aber aufpassen, der Teufel steckt im 
Detail.

MfG
Falk

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Firmware Updates für FPGA
Anlage das JATAG Protokoll. mit Pegeln

Ich habe für JATAG Interface ein Protokoll
für PC oder uC geschrieben.
Mit SCK TMS DATA bzw (TRST)kan man das FPGA
über Command, DATA z.B Bitseriell steuern.
(shift Bits )
Bzw. ein Design in den FPGA up/downladen.
ID. lesen z.B 32Bit 101001.....0101 .
Reset Command machen.Und externe HW TestBench ect.
Der Code dafür ist aber immer als Flussdia. dargestellt.
Und umständlich komplex dargestellt.  IEE 1149.1 ????
CATURE DATA Reg,UPDATE DATA Reg. EXIT DATA Reg.
Wichtig ist das bevor der letzte CLOCK-Bit mit Data-Bit gesendet wird
das TMS-bit auf High angelegt werden muss.
if (i % (8-1) == 0 )

 TMS.bit = High;

Sonst verhaspelt sich die JATAG-State-Maschine.
Zum ersten Start mus man auch noch min z.B 8 dummy
Clocks anlegen.
Sonst Sychronisiert sich das nicht sicher.
TMS&DATA =LOW => Grundstellung.
Danch TMS = HIGH .

Der Befehlssatz ist bis z.B (6) bis 8-Bit breit,gefolgt von DATA usw.


Geht auch für ispPAC30 Reprogrammable Analog-IC.
So kan das Design Füttern u.Fernwarten.
Auf dem PC ist noch ein Prog. das den 011101 BitStream in
HEX 0x0FC,0x03,0xFE wandelt. Zum Code ablegen in uC.
So kan man die Fuses besser lesen, bzw Design CRC fahren.
Wie bei EPROM Optimizer/Vers. Kontrolle ect.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier ist der Command Code.
Gruss Holger.

von holger (Gast)


Lesenswert?

Hier ist der Prom Code.
Gruss Holger.

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist der Prom Code.
Gruss Holger.

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.