Wie liest man Firmware von Alteras FPGA (Cyclone IV) mit USB Blaster?

Ich fange an, Alteras Cyclone IV FPGA zu untersuchen, um es in meinen Projekten zu verwenden. Jetzt habe ich mir von Nachbarfirma ein richtiges Gerät mit USB Baster Rev.C ausgeliehen. Ich würde versuchen, eines anstelle des Evaluierungsboards zu verwenden, das ich im Moment nicht habe.

Bevor ich einen Code in das Gerät einfüge, möchte ich die Original-Firmware herunterladen, damit ich das Gerät jederzeit in den Ausgangszustand zurückversetzen kann.

Nachdem ich jedoch USB Blaster über JTAG an das Gerät angeschlossen und Programmer ausgeführt habe, habe ich keine Schaltfläche "Lesen" gefunden (wie ich es normalerweise auf den GUIs von AVR-Programmierern sehe):

Geben Sie hier die Bildbeschreibung ein

Kurze Suche im Internet hat nicht geholfen.

BEARBEITEN 1

Es sieht so aus, als gäbe es zusätzliche Erinnerungen auf der Platine:

Geben Sie hier die Bildbeschreibung ein

Früher habe ich mich über X4 (mit einem großen roten Pfeil gekennzeichnet) verbunden.

Wie ist das Gerät mit seinem Flash-Chip verbunden? JTAG? Aktive Seriennummer? Passiv seriell? Parallel?
@sbell siehe meine EDIT 1 zur Klarstellung.

Antworten (3)

Um die Gerätekonfiguration zu lesen, müssen Sie sich mit X5 statt mit X4 verbinden (wie von @Simon Richter hervorgehoben). Ändern Sie Ihre Einstellungen so, dass sie mit den unten gezeigten übereinstimmen:

bereit, die Konfiguration zu prüfen

Klicken Sie auf „Start“, um die Konfiguration auszulesen. Wenn es fertig ist, können Sie einen Dateinamen festlegen und dann wie folgt auf „Datei speichern“ klicken:

bereit zum Speichern der Konfiguration

Danke für die Antwort! Ich habe das Gerät nicht direkt bei mir, aber AFAIR, als ich USB-B an X5 anschloss, konnte es überhaupt kein Gerät erkennen. Ich werde es am Mittwoch nochmal genauer versuchen und einen neuen Kommentar posten! Vielen Dank für Ihren erneuten Beitrag!
Stellen Sie einfach sicher, dass Sie den Modus auf "Active Serial Programming" eingestellt haben und dass das Gerät als "EPCS16" angezeigt wird - genau wie die obigen Bilder sie zeigen
Ihr seid großartig, Jungs! Vielen Dank für die Hilfe!
In welchem ​​Format speichert die Option "Datei speichern" die Untersuchungsdaten. Ist es .rpd oder .sof oder .pof oder .hex oder .jic? EPCS benötigt das richtige .rpd-Format!
Es wird als .pof-Datei gespeichert, was für ein EPCS gut funktioniert. Wenn Sie jedoch ein anderes Format benötigen, können Sie die .pof-Datei zuerst speichern und dann mit Datei-> "Programmierdateien konvertieren ..." konvertieren.

Es gibt keine Möglichkeit, die aktuelle Konfiguration zurückzulesen.

Wenn Ihr Entwicklungsboard für den JTAG-Modus verdrahtet ist, wie es auf Ihrem Screenshot aussieht, wird durch einfaches Schreiben einer neuen Konfiguration nur das FPGA aktualisiert und der Konfigurations-Flash in Ruhe gelassen, sodass ein Power-Cycle den Flash neu lädt und alles wieder so ist wie es war davor.

Das ist etwas Neues für mich, da ich davon ausgegangen bin, dass moderne Mikrocontroller (zumindest seit 10-15 Jahren) alles auf einer Platine haben: Speicher, IOs, Timer und so weiter. Also bin ich davon ausgegangen, dass die FPGAs von Altera gleich sind. Bitte lesen Sie meine EDIT 1 für einige Erläuterungen zu Ihren Gegenfragen. Danke für Ihre Aufmerksamkeit!
Das FPGA hat den SRAM für die Tabellen, aber die Inhalte für die Tabellen werden von einem externen Flash-Chip (EPCS...) geladen. Wenn Sie (wie Sie es tun) eine Verbindung zur JTAG-Verbindung herstellen, können Sie den SRAM aktualisieren, der flüchtig ist. Wenn Sie an X5 eine Verbindung zum seriellen Bus herstellen, können Sie den Flash überschreiben und dann das FPGA mit den Pins /CSund zurücksetzen /CE.

Ich weiß nicht, ob Sie über Quartus II die Konfiguration so lesen können, wie sie ist, und sich von Quartus II in VHDL/Verilog übersetzen lassen, was im Speicher gespeichert wurde. Eine Sache, die Sie immer tun können, ist, den Inhalt Ihres EPCS-Speichers mit einem SPI-Lesegerät zu lesen und den gesamten Dump zu erstellen. Nun, in Anbetracht des Speicherplatzes (>=16 MB) werden Sie höchstwahrscheinlich eine MASSIVE .hex-Datei erstellen. Es gibt Dateisplitter im Internet und solange die .hex-Datei recht einfach ist, können Sie die geteilte Datei beispielsweise direkt mit Notepad++ oder Hexedit (bessere Lösung für Rohdateien) lesen. Vielleicht 128 KB jeder einzelnen geteilten Datei oder 256 Spitzen können ein korrektes Volumen sein. Theoretisch müssten Sie nicht die gesamte Platine mit Strom versorgen, sondern nur den EPCS-Chip. Übrigens,

Wenn es nur um ein Kopieren/Einfügen des Konfigurationsspeichers geht, sollte es reichen. Ich möchte das für mein DE10-Nano-Kit tun. Hem, ich habe alles, was ich dazu brauche: Arduino, Speicherkarte, Schild, Drähte ... werde ich wahrscheinlich bald versuchen.

Wenn es sich um ein Reverse Engineering handelt, wünsche ich Ihnen viel Glück!