mikrocontroller.net

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


Autor: HB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: HB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: cholertinu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: HB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Holger Harten (holger-h-hennef) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Holger Harten (holger-h-hennef) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist der Command Code.
Gruss Holger.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist der Prom Code.
Gruss Holger.

Autor: holger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist der Prom Code.
Gruss Holger.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.