Konfigurieren (Bitstream hochladen) auf MAX10 ohne Altera-Tools unter Verwendung von Linux

Ich verwende derzeit den Flash-basierten Altera MAX10 in einem Design, das an einen Hauptprozessor angeschlossen ist, auf dem Linux auf einem benutzerdefinierten Board ausgeführt wird (das FPGA selbst implementiert nur einige wenige Peripheriegeräte; der Prozessor, auf dem Linux ausgeführt wird, ist ein normales ARM-Design).

Bis jetzt habe ich die Standard-Altera-Tools für die Entwicklung verwendet ( Quartus Prime und USB Blaster als Programmiersoftware und Hardware-Tools), aber sobald das Produkt ausgeliefert wird, haben wir diese Option nicht mehr.

Da wir das Design so gestalten möchten, dass es vor Ort aufrüstbar ist, benötigen wir eine Lösung, um einen Bitstream von Linux (dem eingebetteten Betriebssystem) ohne einen USB-Blaster oder die Quartus-Programmiertools (da es sich um ein ARM-Board handelt, wir kann die Binärdateien nicht ausführen).

Also meine Fragen sind:

  • Welche Software-Tools können für diesen Zweck verwendet werden? ( fpga_manager scheint noch nicht zur Hauptsendezeit zu sein, und urjtag hat nicht viel mit der jüngsten Altera-Unterstützung zu tun.)
  • Welche Überlegungen müssen beim Hardwaredesign angestellt werden, um diese Funktionalität zu ermöglichen? (Können GPIOs zum Beispiel zum Bit-Bang-JTAG verwendet werden - aus Kostensicht eine ideale Lösung - oder brauche ich einen Chip wie einen FTDI ?)

Zum Zweck der Entwicklung einer Proof-of-Concept-Lösung habe ich ein MAX10 Eval-Kit und einen BeagleBone Black . Ich kann alle Software- und Hardware-Kludges machen, die erforderlich sind.

Teillösungen

Wenn Sie wissen, wie man eines der folgenden Dinge macht, werde ich eines der folgenden positiv bewerten, in der Hoffnung, aus den einzelnen Teilen eine vollständige Lösung zusammenzustellen:

  • Wenn Sie einen Bitstream auf einen anderen Flash-basierten FPGA von Altera (z. B. MAXII) mit Nicht-Altera-Software und -Hardware geflasht haben;
  • Wenn Sie einen Bitstream auf einen MAX10 mit einem USB-Blaster geflasht haben, der keine Software von Altera verwendet; oder
  • Wenn Sie einen Bistream auf einen MAX10 mit Nicht-Altera-Programmierhardware und Standard-Altera/Quartus-Programmiersoftware geflasht haben.

Aktualisierung:

Ich habe es noch nie verwendet, aber JTAG mit JAM STAPL klingt nach einer Lösung für Sie. altera.com/content/dam/altera-www/global/en_US/pdfs/literature/… 16- und 32-Bit-Unterstützung für eingebettete Systeme.
Es gibt auch einige sehr aktuelle Patches für OpenOCD, sodass dies möglicherweise einen anderen Ansatz ermöglicht.

Antworten (2)

Ich denke, die Standardmethode dafür ist, eine SVF- oder XSVF-Datei mit der Quartus-Software zu generieren und sie dann mit etwas wie OpenOCD oder http://www.clifford.at/libxsvf/ abzuspielen. Sie würden über die JTAG-Pins eine Schnittstelle zum FPGA herstellen, entweder über GPIO oder vielleicht einen FTDI-Chip.

Eine andere Möglichkeit wäre, auf den Onboard-Konfigurationsspeicher des FPGAs ganz zu verzichten und die Konfiguration direkt während des Bootens über SPI oder ähnliches zu laden, vorausgesetzt, das FPGA unterstützt dies. Auf diese Weise muss die FPGA-Firmware während des Firmware-Upgrade-Prozesses nicht aktualisiert werden, da sie in die Haupt-Firmware integriert und automatisch in das FPGA geladen würde.

Diese Antwort scheint jetzt möglich zu sein; OpenOCD 0.10.0 hat ein gewisses Maß an MAX10-Unterstützung, hat auch eine gpio jtag-Implementierung. Der Trick besteht darin, herauszufinden, wie man es benutzt ...
SVF/XSVF ist vollständig geräteunabhängig. Die Datei enthält explizite JTAG-Anweisungen. Infolgedessen können die Dateien ziemlich groß sein, aber es funktioniert, wenn Sie die Datei generieren können und einen guten Parser dafür haben. Außerdem ist die Sequenz normalerweise so einfach, dass die direkte Implementierung ziemlich einfach ist. Tatsächlich können Sie zumindest für Xilinx-Bitdateien einfach die gesamte Bitdatei auf einmal sichern, ohne sich die Mühe machen zu müssen, die Header zu entfernen, und es wird problemlos funktionieren.

Dies ist eher eine Anleitung, wie es gemacht werden könnte.

BEARBEITEN: Sie benötigen: für die erstmalige Programmierung: QuartusII, QSYS, NIOS SBT, JTAG-Verbindung zu Ihrem FPGA und für das Remote-Upgrade: ein Terminalprogramm, das Dateien und eine UART-Verbindung zu Ihrem FPGA senden kann.

Max10 unterstützt den dual-komprimierten Bildmodus. Hier können Sie mehr über den Flash-Speicher lesen.

Erstellen Sie ein goldenes Image, das das Arbeitsimage in Flash schreiben kann. Hier ist eine Dokumentation für Remote System Upgrade mit UART. Achten Sie darauf, Ihre Flash-Adressen zu schützen, in denen sich das Bild befindet.

Fügen Sie Ihrem Board eine JTAG-Verbindung hinzu (Konfigurationsanleitung Max10) und programmieren Sie den FPGA, bevor er das Haus verlässt.

Als nächstes wollen wir das FPGA aktualisieren. Die Methode zum Abrufen der .hex-Dateien ist etwas umständlich, aber nach ein-, zweimaliger Ausführung sollte es in Ordnung sein, es sollte im Beispiel beschrieben werden.

Möchten Sie das geladene Image über GPIO oder über die interne Konfiguration auswählen, denn wenn Sie intern wählen, muss Ihr Arbeitsdesign in der Lage sein, wieder auf Ihr goldenes Image umzuschalten.

Vielen Dank für die Antwort, aber es gibt ein Detail, das ich in meiner Frage nicht erwähnt habe - wir haben die Einzelkonfiguration ausgewählt. Dies macht dieses Schema etwas schwieriger. Ich werde meine Frage entsprechend aktualisieren.
Ich gehe also davon aus, dass Ihr gesamtes Design aktualisierbar sein muss, nicht nur das NIOS2-System? Außerdem gibt es keine Möglichkeit, auf ein doppelt komprimiertes Bild umzustellen?
Das FPGA enthält keinerlei CPU-Kern (es implementiert ein paar UARTs und einige benutzerdefinierte Logik). Ich versuche, eine doppelte Konfiguration zu vermeiden - die Geräte scheinen viel teurer zu sein.