Ich habe mich gefragt, ob jemand eine effiziente Möglichkeit zum Programmieren des FPGA (PL) für eine Xilinx Zynq-7-Serie oder verwandte Geräte von einem Host-C-Programm aus kennt (nicht auf dem SoC, sondern vom Host-PC). Gibt es eine Xilinx-API, die ich in meinem Programm verwenden/einbeziehen kann? Als einzige Möglichkeit, die mir im Moment einfällt, ist das Aufrufen der Befehlszeilenprogrammierung über Impact (was nicht sehr elegant ist).
Grundsätzlich möchte ich die SDK-Funktion "FPGA programmieren" in mein Host-C-Programm einfügen, in dem der Benutzer eine vorgefertigte .bit-Datei (und wenn möglich eine .elf-Datei) auswählt, um das FPGA/(SoC) zu programmieren. Dies ist nur ein Konzepttest, später möchte ich diese dynamische Konfiguration auf eine der ARM-CPUs übertragen.
Vielen Dank Sam
Hängt davon ab, wie Sie das FPGA mit dem Host verbinden. Wenn Sie das Xilinx JTAG-Kabel verwenden, bleiben Sie bei Impact ziemlich hängen. Wenn Sie jedoch eine andere Schnittstelle zum Host haben, wäre es nicht allzu schwierig, beispielsweise eine Loader-Schnittstelle zu schreiben, die eine Bitdatei akzeptieren und den Konfigurations-Flash überschreiben kann. Dann müssen Sie nur noch das Board neu starten, und Sie können loslegen. Ich würde vorschlagen, den Xilinx-Konfigurationsleitfaden für das von Ihnen verwendete Teil zu lesen. Es enthält genauere Informationen zu den verschiedenen Konfigurationsschnittstellen.
Bearbeiten: Interessant; Es gibt keinen separaten Konfigurationsleitfaden für die Zynq-Teile. Werfen Sie einen Blick auf Kapitel 6 des technischen Referenzhandbuchs Xilinx ug585. Loks wie das Verfahren besteht darin, einen Kern vom Flash zu booten und dann den Kern die FPGA-Konfiguration laden zu lassen. Wenn Sie über eine beliebige Schnittstelle eine neue Konfiguration in den RAM laden können, können Sie das FPGA zurücksetzen und die neue Konfiguration aus dem RAM laden, solange das Zurücksetzen des programmierbaren Logikteils den Kern nicht daran hindert, auf das Bild im RAM zuzugreifen. Sieht so aus, als müssten Sie AXI-PCAP verwenden. Ich könnte mir vorstellen, dass Sie auch die ARM-Core-Software aktualisieren können, aber ich bin mir nicht sicher, was das richtige Verfahren wäre. Haben Sie einen externen Programmspeicher oder verwenden Sie nur On-Chip-Speicher? Wenn Sie einen externen Speicher verwenden können, können Sie möglicherweise ein neues Bild im externen Speicher "inszenieren". Kopieren Sie es dann zurück in den internen Speicher, bevor Sie es starten. Im Grunde genommen brauchen Sie nur eine Möglichkeit, ein wenig Code zu entfernen, der die FPGA-Konfiguration neu laden und dann die ARM-Core-Software neu laden und/oder starten kann.
Xilinx hat einen sehr guten Anwendungshinweis mit unterstütztem C-Code, den Sie als Basis für Ihren Code verwenden können.
Damit Ihr Controller funktioniert, müssen Sie über 4 freie GPIOs verfügen und diese wie in diesem Bild gezeigt mit dem FPGA (und den anderen JTAG-Geräten in der Kette) verbinden:
Möglicherweise müssen Sie es ein wenig ändern, um es an Ihre eigene Umgebung anzupassen, aber im Grunde müssen Sie die in der App-Note beschriebenen Schritte durchlaufen, zuvor habe ich das XSVF-Format verwendet, um das FPGA mit einem Cortex M3-Controller zu programmieren, dafür I folgende Schritte befolgt:
Sie können Xilinx nach XAPP058 suchen : "Xilinx In-System Programming Using an Embedded Microcontroller" auf ihrer Website, es ist ein bisschen alt, aber Sie können vielleicht das neueste finden, das auch mit den neuen Geräten funktioniert.
Sam Palmer
Sam Palmer
alex.forencich
FarhadA