The following boards are supported by the meta-xilinx-tools layer. Eval board XSCT (Software Command-Line Tool) BSP machine configuration files are generated using meta-xilinx-tools/scripts/generate-machines-<XSCT_VERSION>.sh scripts.
Variable usage examples:
Machine Configuration file:
- Eval Board:
MACHINE = "zcu102-zynqmp"
- QEMU:
MACHINE = "qemu-zynqmp"
HW Board Device tree:
YAML_DT_BOARD_FLAGS = "{BOARD zcu102-rev1.0}"
Note: QEMU Machine Configuration file generated images are not intended to run on HW. These machile files are used for Yocto Project Tests (Image testing).
Devices | Evaluation Board | Machine Configuration file | Reference XSA | HW Board Device tree | QEMU tested | HW tested |
---|---|---|---|---|---|---|
MicroBlaze | KC705 | kc705-microblazeel | kc705-microblazeel |
kc705-full |
Yes | Yes |
AC701 | ac701-microblazeel | ac701-microblazeel |
ac701-full |
Yes | Yes | |
KCU105 | kcu105-microblazeel | kcu105-microblazeel |
kcu105 |
Yes | Yes | |
VCU118 | vcu118-microblazeel | vcu118-microblazeel |
vcu118-rev2.0 |
Yes | Yes | |
qemu-microblazeel | kcu105-microblazeel |
kcu105 |
Yes | NA | ||
Zynq-7000 | ZC702 | zc702-zynq7 | zc702-zynq7 |
zc702 |
Yes | Yes |
ZC706 | zc706-zynq7 | zc706-zynq7 |
zc706 |
Yes | Yes | |
qemu-zynq7 | zc702-zynq7 |
zc702 |
Yes | NA | ||
ZynqMP | ZCU102 | zcu102-zynqmp | zcu102-zynqmp |
zcu102-rev1.0 |
Yes | Yes |
ZCU104 | zcu104-zynqmp | zcu104-zynqmp |
zcu104-revc |
Yes | Yes | |
ZCU106 | zcu106-zynqmp | zcu106-zynqmp |
zcu106-reva |
Yes | Yes | |
ZCU111 | zcu111-zynqmp | zcu111-zynqmp |
zcu111-reva |
Yes | Yes | |
ZCU208 | zcu208-zynqmp | zcu208-zynqmp |
zcu208-reva |
Yes | Yes | |
ZCU216 | zcu216-zynqmp | zcu216-zynqmp |
zcu216-reva |
Yes | Yes | |
ZCU670 | zcu670-zynqmp | zcu670-zynqmp |
zcu670-revb |
Yes | Yes | |
qemu-zynqmp | zcu102-zynqmp |
zcu102-rev1.0 |
Yes | NA | ||
Versal | VCK190 | vck190-versal | vck190-versal |
versal-vck190-reva-x-ebm-01-reva |
Yes | Yes |
VMK180 | vmk180-versal | vmk180-versal |
versal-vmk180-reva-x-ebm-01-reva |
Yes | Yes | |
VPK120 | vpk120-versal | vpk120-versal |
versal-vpk120-reva |
Yes | Yes | |
VPK180 | vpk180-versal | vpk180-versal |
versal-vpk180-reva |
Yes | Yes | |
VEK280 | vek280-versal | vek280-versal |
versal-vek280-revb |
Yes | Yes | |
VHK158 | vhk158-versal | vhk158-versal |
versal-vhk158-reva |
Yes | Yes | |
qemu-versal | vck190-versal |
versal-vck190-reva-x-ebm-01-reva |
Yes | NA |
Note: Additional information on AMD Adaptive SoC's and FPGA's can be found at: https://www.amd.com/en/products/adaptive-socs-and-fpgas.html
The Yocto Project setup for the XSCT workflow is as follows. Be sure to read everything below.
-
Follow Building Instructions upto step 7.
-
Export gen-machineconf tool.
$ export PATH=$PATH:<ABSOLUTE_PATH>/gen-machine-conf
- Run the script from the build or ${TOPDIR} directory.
Note:
- The -c option should point either /conf or /build/conf directory.
- The -l option will automatically add the necessary parameters to the local.conf file. If you need to re-run this comment, you just clear the parameters from the end of the file. Without the -l option the items are printed to the screen and must be manually added to your conf/local.conf
- The --soc-family argument is an optional argument and user can skip this.
$ gen-machineconf parse-xsa --soc-family <soc_family_name> --hw-description <path_to_xsa> -c <conf-directory> -l <path-to-build-directory>/build/conf/local.conf --machine-name <soc-family>-<board-name>-xsct-<design-name>
The following will be written to the end of the /build/conf/local.conf file:
# Use the newly generated MACHINE
MACHINE = "zynq-zcu102-xsct"
-
Build your project, You should now be able to build your project normally. See the Yocto Project documentation if you have questions on how to work with the recipes. The following is a simple build for testing.
-
Continue Building Instructions from step 8.
meta-xilinx-tools recipes depends on XSA to be provided. As of the 2019.2 release, all design files were renamed from hdf to xsa.
HDF_URI specifies the download url for the XSA file. It is usually file:// or https://.
HDF_URI[sha256sum] must also be defined so the download can be verified.
These value as set automatically by gen-machineconf, and will rarely need to be set manually.
This layer provides additional configurations through YAML
- Example YAML based configuration for embeddedsw components(FSBL, PMUFW, etc.) uart, memory, flash settings. from machine or local confiruation file.
- FSBL or FS-BOOT
# MicroBlaze:
YAML_FILE_PATH:pn-fs-boot = "${WORKDIR}/fsboot.yaml"
YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot = "axi_uartlite_0"
YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot = "axi_uartlite_0"
YAML_MAIN_MEMORY_CONFIG:pn-fs-boot = "mig_7series_0"
or
YAML_MAIN_MEMORY_CONFIG:pn-fs-boot = "DDR4_0"
YAML_FLASH_MEMORY_CONFIG:pn-fs-boot = "axi_quad_spi_0"
# Zynq-7000:
YAML_SERIAL_CONSOLE_STDIN:pn-fsbl-firmware = "ps7_uart_1"
YAML_SERIAL_CONSOLE_STDOUT:pn-fsbl-firmware = "ps7_uart_1"
# ZynqMP:
YAML_SERIAL_CONSOLE_STDIN:pn-fsbl-firmware = "psu_uart_0"
YAML_SERIAL_CONSOLE_STDOUT:pn-fsbl-firmware = "psu_uart_0"
- PMUFW or PLMFW
# ZynqMP:
YAML_SERIAL_CONSOLE_STDIN:pn-pmu-firmware = "psu_uart_1"
YAML_SERIAL_CONSOLE_STDOUT:pn-pmu-firmware = "psu_uart_1"
# Versal:
YAML_SERIAL_CONSOLE_STDIN:pn-plm-firmware = "versal_cips_0_pspmc_0_psv_sbsauart_0"
YAML_SERIAL_CONSOLE_STDOUT:pn-plm-firmware = "versal_cips_0_pspmc_0_psv_sbsauart_0"
# Versal Net:
YAML_SERIAL_CONSOLE_STDIN:pn-plm-firmware = "psx_wizard_0_psxl_0_psx_sbsauart_0"
YAML_SERIAL_CONSOLE_STDOUT:pn-plm-firmware = "psx_wizard_0_psxl_0_psx_sbsauart_0"
- Example YAML based configuration for device tree serial, baudrate, memory configurations.
# MicroBlaze:
YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree = "axi_uartlite_0"
YAML_SERIAL_CONSOLE_BAUDRATE = "115200"
YAML_MAIN_MEMORY_CONFIG:pn-device-tree = "mig_7series_0"
or
YAML_MAIN_MEMORY_CONFIG:pn-device-tree = "DDR4_0"
# Zynq-7000:
YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree = "ps7_uart_1"
YAML_MAIN_MEMORY_CONFIG:pn-device-tree = "PS7_DDR_0"
YAML_SERIAL_CONSOLE_BAUDRATE = "115200"
# ZynqMP:
YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree = "psu_uart_0"
YAML_MAIN_MEMORY_CONFIG:pn-device-tree = "PSU_DDR_0"
YAML_SERIAL_CONSOLE_BAUDRATE = "115200"
# Versal:
YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree = "versal_cips_0_pspmc_0_psv_sbsauart_0"
YAML_SERIAL_CONSOLE_BAUDRATE = "115200"
# Versal Net:
YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree = "psx_wizard_0_psxl_0_psx_sbsauart_0"
YAML_SERIAL_CONSOLE_BAUDRATE = "115200"
- Example YAML based configuration for setting eval board specific dtsi files available in DTG repo. Refer https://github.com/Xilinx/device-tree-xlnx/tree/xlnx_rel_v2024.2/device_tree/data/kernel_dtsi/2024.2/BOARD for more details.
# MicroBlaze:
YAML_DT_BOARD_FLAGS:pn-device-tree = "{BOARD kcu105}"
# Zynq-7000:
YAML_DT_BOARD_FLAGS:pn-device-tree = "{BOARD zc702}"
# ZynqMP:
YAML_DT_BOARD_FLAGS:pn-device-tree = "{BOARD zcu102-rev1.0}"
# Versal:
YAML_DT_BOARD_FLAGS:pn-device-tree = "{BOARD versal-vck190-reva-x-ebm-01-reva}"
# Versal Net:
YAML_DT_BOARD_FLAGS:pn-device-tree = "{BOARD versal-net-vn-p-b2197-00-reva}"
Note: Only AMD eval boards have the dtsi in DTG, for custom board user has to follow one of the following methods.
Patch DTG to include the custom board dtsi and enable it using YAML configuration.
YAML_DT_BOARD_FLAGS:pn-device-tree = "{BOARD custom-board}"
Create a custom board dtsi file and use EXTRA_DT_INCLUDE_FILES variable to include the custom board dtsi to final dtb. Here is the example usage.
EXTRA_DT_INCLUDE_FILES:append = " <path-to-directory>/<custom-board>.dtsi"