| 1 | Xilinx Zynq board (``xilinx-zynq-a9``) |
| 2 | ====================================== |
| 3 | The Zynq 7000 family is based on the AMD SoC architecture. These products |
| 4 | integrate a feature-rich dual or single-core Arm Cortex-A9 MPCore based |
| 5 | processing system (PS) and AMD programmable logic (PL) in a single device. |
| 6 | |
| 7 | The SoC is documented in the |
| 8 | `Zynq 7000 Technical Reference manual <https://docs.amd.com/r/en-US/ug585-zynq-7000-SoC-TRM/Zynq-7000-SoC-Technical-Reference-Manual>`__. |
| 9 | |
| 10 | The QEMU xilinx-zynq-a9 board supports the following devices: |
| 11 | |
| 12 | - Arm Cortex-A9 MPCore CPU |
| 13 | |
| 14 | - Cortex-A9 CPUs |
| 15 | - GIC v1 interrupt controller |
| 16 | - Generic timer |
| 17 | - Watchdog timer |
| 18 | |
| 19 | - OCM 256KB |
| 20 | - SMC SRAM 64MB |
| 21 | - Zynq SLCR |
| 22 | - SPI x2 |
| 23 | - QSPI |
| 24 | - UART |
| 25 | - TTC x2 |
| 26 | - Gigabit Ethernet Controller x2 |
| 27 | - SD Controller x2 |
| 28 | - XADC |
| 29 | - Arm PrimeCell DMA Controller |
| 30 | - DDR Memory |
| 31 | - USB 2.0 x2 |
| 32 | |
| 33 | Running Buildroot ZC702 Images |
| 34 | """""""""""""""""""""""""""""" |
| 35 | |
| 36 | Buildroot has a ZC702 defconfig. Buildroot 2026.05 release is tested at the |
| 37 | time of writing. From the Buildroot source tree: |
| 38 | |
| 39 | .. code-block:: bash |
| 40 | |
| 41 | $ make zynq_zc702_defconfig |
| 42 | $ make |
| 43 | |
| 44 | The generated files are in ``output/images/``. The examples below use: |
| 45 | |
| 46 | * ``u-boot.bin`` |
| 47 | * ``uImage`` |
| 48 | * ``sdcard.img`` |
| 49 | |
| 50 | QEMU's SD card model requires a power-of-two image size. Work on a copy |
| 51 | of the Buildroot SD image and resize the copy, not the original output: |
| 52 | |
| 53 | .. code-block:: bash |
| 54 | |
| 55 | $ cp output/images/sdcard.img sdcard-qemu.img |
| 56 | $ qemu-img resize -f raw sdcard-qemu.img 128M |
| 57 | |
| 58 | To boot through the U-Boot image generated by Buildroot, use the generic |
| 59 | loader device to place the raw ``u-boot.bin`` at the address it was linked |
| 60 | for and start the CPU there. The ``zynq_zc702_defconfig`` U-Boot image is |
| 61 | U-Boot proper, not a Zynq boot ROM image, and is linked at ``0x04000000``: |
| 62 | |
| 63 | .. code-block:: bash |
| 64 | |
| 65 | $ qemu-system-arm -M xilinx-zynq-a9 -m 1G \ |
| 66 | -machine boot-mode=sd \ |
| 67 | -display none -serial null -serial mon:stdio \ |
| 68 | -device loader,file=output/images/u-boot.bin,addr=0x04000000,cpu-num=0 \ |
| 69 | -drive file=sdcard-qemu.img,if=sd,format=raw |
| 70 | |
| 71 | Direct Linux boot of the generated Buildroot image is also supported. The Zynq |
| 72 | ZC702 DTB is generated by Buildroot and is located in |
| 73 | ``output/images/zynq-zc702.dtb``. The kernel image is generated as a uImage: |
| 74 | |
| 75 | .. code-block:: bash |
| 76 | |
| 77 | $ qemu-system-arm -M xilinx-zynq-a9 -m 1G \ |
| 78 | -display none -serial null -serial mon:stdio \ |
| 79 | -kernel output/images/uImage \ |
| 80 | -dtb output/images/zynq-zc702.dtb \ |
| 81 | -append "console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait" \ |
| 82 | -drive file=sdcard-qemu.img,if=sd,format=raw |
| 83 | |
| 84 | For configuring the boot-mode provide the following on the command line: |
| 85 | |
| 86 | .. code-block:: bash |
| 87 | |
| 88 | -machine boot-mode=qspi |
| 89 | |
| 90 | Supported values are ``jtag``, ``sd``, ``qspi`` and ``nor``. |