Skip to content

Bring up a VCK190

The Xilinx Versal VCK190 is one of the supported targets, at the system-daemon support level, with Vitis AI acceleration. PetaLinux keeps the boot path; SpaceOS runs on top as a daemon install. Generic bring-up requires a PetaLinux image with KVM and the Deep Learning Processing Unit (DPU) enabled and a working Linux console. PetaLinux is Xilinx’s board support package and build system for Versal boards.

Xilinx Versal VCK190 evaluation board.
Xilinx Versal VCK190: aarch64 with an AI Engine.

Before starting, obtain the bench network settings, management access, and credentials from the operator responsible for the board.

Hardware topology

The VCK190 has two distinct subsystems on a single board:

  • DUT (device under test): the subsystem that runs the Versal chip. This is where SpaceOS and the workloads execute.
  • System controller: a separate processor with its own memory that manages board-level functions such as power, clocking, and configuration.

Boards typically expose a web management interface, such as Xilinx BEAM or a vendor equivalent, for power cycling, boot-mode selection, and SD-card multiplexing between DUT and host.

Step 1: Create the PetaLinux project

Install PetaLinux 2022.2 on the build host. Adjust paths for your installation.

Source the PetaLinux environment in every fresh shell:

Terminal window
source <petalinux-install-dir>/settings.sh

Download the matching VCK190 board support package (BSP) from Xilinx and create a project:

Terminal window
petalinux-create -t project -s <path-to-bsp>.bsp -n vck190-spaceos
cd vck190-spaceos

Step 2: Configure the firmware

Terminal window
petalinux-config

In the menu:

  • Select Image Packaging Configuration → Root file system type and choose EXT4 (SD/eMMC/SATA/USB).
  • Select DTG Settings → Kernel Bootargs → Add extra boot args and append cma=900M.

cma sizes the contiguous memory area, the pool of physically contiguous memory the kernel reserves at boot for devices that cannot scatter their transfers. At 900 MB it is enough for typical SpaceOS unikernel and DPU workloads. Adjust it if the service set needs more.

Step 3: Configure the Linux kernel

Terminal window
petalinux-config -c kernel

Enable:

  • Virtualization → Kernel-based Virtual Machine (KVM) support.
  • Device Drivers → Misc devices → Xilinx Deep learning Processing Unit (DPU) Driver.
  • Device Drivers → Xilinx AI Engine, when using AI Engine workloads.

KVM is required for the Solo5 hvt substrate. The DPU driver is required for Vitis AI on Versal acceleration.

Step 4: Configure the root filesystem

Terminal window
petalinux-config -c rootfs

Enable the packages needed by the service set. A workable VCK190 root filesystem enables package management, networking tools, OCI container support, OpenCV, Python modules, Vitis acceleration packages, and the standard PetaLinux utilities.

Step 5: Build the image

Terminal window
petalinux-build
petalinux-package --boot --plm --psmfw --u-boot --dtb --force
petalinux-package --wic

The output is a petalinux-sdimage.wic file under images/linux/.

You can also boot the generated image in QEMU before flashing hardware:

Terminal window
petalinux-boot --qemu --kernel

To exit the QEMU console, press Ctrl+A, then X.

Step 6: Flash and boot

With the DUT halted, move the SD card to the build host. Then flash the image:

Terminal window
sudo dd if=images/linux/petalinux-sdimage.wic \
of=/dev/<sd-card-device> conv=fsync status=progress bs=4M

Reconnect the SD card to the DUT and power-cycle the board. A physical power cycle is the most reliable way to ensure that the bootloader picks up the new image.

Step 7: Verify the substrate

Once Linux is up, verify that KVM and the acceleration devices are present. The substrate is the isolation mechanism SpaceOS will use to run each service, and it depends on these devices existing:

Terminal window
ls /dev/kvm
ls /dev/xdpu*
cat /proc/device-tree/compatible

With KVM and the acceleration devices present, the board can run SpaceOS workloads and use the DPU for inference.