Xilinx’ ZYNQ-Familie

Dual-Core-Cortex-A9 und FPGA-Logik vereint

19. Juli 2012, 11:31 Uhr | Von Dirk Schmitz, dedizierter Xilinx FAE von Silica
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Konfiguration

Grundsätzlich startet immer zuerst der Prozessblock, bevor der FPGA-Teil aktiv werden kann. Sollten die Software mit Teilen der programmierbaren Logik zusammenarbeiten, ist dieser Umstand entsprechen zu beachten, damit der Hard- und Softwareteil auch synchron miteinander arbeiten. Das kann man über Software-Polls oder Interrupts bewerkstelligen.
Beim Startup werden drei Boot-Stages durchlaufen:
* Stage 0: Liest den Boot-ROM Code im ARM-Block aus und startet diesen. Hierbei wird, ähnlich wie beim BIOS eines PCs, eine grundlegende Konfiguration des ARM-Blocks vorgenommen. Hierbei werden auch die Flash-Controller zur Verfügung gestellt, um einen FSBL (First Stage Boot Loader) in den OCM (On Chip Memory) zu laden; effektiv stehen hier 192kB zur Verfügung, da der Boot-Prozess die oberen 64kB, des insgesamt 256kB großen OCM, beansprucht. Die Entscheidung über den Flash-Typ geschieht über externe Mode-Pins am ZYNQ Baustein: Es stehen SD-, NAND-, NOR- und QSPI-Flash zur Auswahl.

* Stage 1: Das FSBL wird im OCM ausgeführt, um die nutzerspezifischen Einstellungen am Prozessorblock vorzunehmen. Das FSBL kann alternativ auch direkt aus dem Flash ausgeführt werden (XIP, eXecute In Place). Optional kann der Bootloader auch den Bitstream für den FPGA-Teil laden. Das kann aber nach Wunsch auch erst später geschehen. Ein Secure-Boot wird ebenfalls unterstützt: Hier sind FSBL und Bitfile via AES-256 und SHA-256 geschützt. Der Schlüssel wird über eFuse oder batteriegepuffert im ZYNQ vorgehalten.
* Stage 2 (Optional): Sollten Sie den ARM nicht im Bare-Metal-Betrieb (ohne Betriebssystem) verwenden wollen, wird an dieser Stelle das Betriebssystem geladen. Hierzu bietet Xilinx eine portierte Version von U-Boot an, die beispielsweise einen Linux-Kernel in den DDR-Memory lädt. Bild 2 zeigt ein Beispiel für ein System mit Linux. Alle nötigen Daten sind auf einer SD-Flash Karte enthalten; ein Boot-Image (mit FSBL, Bitfile und U-Boot) kann bequem über einen Wizard erstellt werden. Secure-Boot wird für U-Boot aktuell leider noch nicht unterstützt.
Wie bereits erwähnt, kann der FPGA-Teil zu Beginn komplett unkonfiguriert bleiben; dieser ist also eher als eine Erweiterung des Controllers zu sehen, denn ein FPGA mit ARM-CPU. Daher spricht Xilinx bei der ZYNQ-Familie auch nicht von FPGAs, sondern von einer EPP (Extensible Processing Platform). Das bezieht sich auch auf die Betriebsspannungen: Der ZYNQ kann gestartet werden, ohne das der FPGA-Teil versorgt werden müsste. An dieser Stelle sei aber erwähnt, dass bei einem Secure-Boot ein Funktionsblock im FPGA-Teil benötigt wird. Dieser Modus funktioniert also nur mit einer kompletten Spannungsversorgung.


  1. Dual-Core-Cortex-A9 und FPGA-Logik vereint
  2. Konfiguration
  3. Toolchain
  4. AXI Interface

Lesen Sie mehr zum Thema


Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Mikroprozessoren