Firmware Updates für FPGA

Gast #486276
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
Persönliche Seite #486288
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.
Gast #486903
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?
Gast #486907
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
Gast #487016
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.
Gast #487050
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
Persönliche Seite #487391
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.
Angehängte Dateien:

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