Xilinx Zynq board (xilinx-zynq-a9)

The Zynq 7000 family is based on the AMD SoC architecture. These products integrate a feature-rich dual or single-core Arm Cortex-A9 MPCore based processing system (PS) and AMD programmable logic (PL) in a single device.

The SoC is documented in the Zynq 7000 Technical Reference manual.

The QEMU xilinx-zynq-a9 board supports the following devices:

  • Arm Cortex-A9 MPCore CPU

    • Cortex-A9 CPUs

    • GIC v1 interrupt controller

    • Generic timer

    • Watchdog timer

  • OCM 256KB

  • SMC SRAM 64MB

  • Zynq SLCR

  • SPI x2

  • QSPI

  • UART

  • TTC x2

  • Gigabit Ethernet Controller x2

  • SD Controller x2

  • XADC

  • Arm PrimeCell DMA Controller

  • DDR Memory

  • USB 2.0 x2

Running Buildroot ZC702 Images

Buildroot has a ZC702 defconfig. Buildroot 2026.05 release is tested at the time of writing. From the Buildroot source tree:

$ make zynq_zc702_defconfig
$ make

The generated files are in output/images/. The examples below use:

  • u-boot.bin

  • uImage

  • sdcard.img

QEMU’s SD card model requires a power-of-two image size. Work on a copy of the Buildroot SD image and resize the copy, not the original output:

$ cp output/images/sdcard.img sdcard-qemu.img
$ qemu-img resize -f raw sdcard-qemu.img 128M

To boot through the U-Boot image generated by Buildroot, use the generic loader device to place the raw u-boot.bin at the address it was linked for and start the CPU there. The zynq_zc702_defconfig U-Boot image is U-Boot proper, not a Zynq boot ROM image, and is linked at 0x04000000:

$ qemu-system-arm -M xilinx-zynq-a9 -m 1G \
    -machine boot-mode=sd \
    -display none -serial null -serial mon:stdio \
    -device loader,file=output/images/u-boot.bin,addr=0x04000000,cpu-num=0 \
    -drive file=sdcard-qemu.img,if=sd,format=raw

Direct Linux boot of the generated Buildroot image is also supported. The Zynq ZC702 DTB is generated by Buildroot and is located in output/images/zynq-zc702.dtb. The kernel image is generated as a uImage:

$ qemu-system-arm -M xilinx-zynq-a9 -m 1G \
    -display none -serial null -serial mon:stdio \
    -kernel output/images/uImage \
    -dtb output/images/zynq-zc702.dtb \
    -append "console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait" \
    -drive file=sdcard-qemu.img,if=sd,format=raw

For configuring the boot-mode provide the following on the command line:

-machine boot-mode=qspi

Supported values are jtag, sd, qspi and nor.