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
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
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.
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?
@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
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?
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.
@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
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.