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.
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:
source <petalinux-install-dir>/settings.shDownload the matching VCK190 board support package (BSP) from Xilinx and create a project:
petalinux-create -t project -s <path-to-bsp>.bsp -n vck190-spaceoscd vck190-spaceosStep 2: Configure the firmware
petalinux-configIn 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
petalinux-config -c kernelEnable:
- 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
petalinux-config -c rootfsEnable 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
petalinux-buildpetalinux-package --boot --plm --psmfw --u-boot --dtb --forcepetalinux-package --wicThe output is a petalinux-sdimage.wic file under images/linux/.
You can also boot the generated image in QEMU before flashing hardware:
petalinux-boot --qemu --kernelTo 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:
sudo dd if=images/linux/petalinux-sdimage.wic \ of=/dev/<sd-card-device> conv=fsync status=progress bs=4MReconnect 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:
ls /dev/kvmls /dev/xdpu*cat /proc/device-tree/compatibleWith KVM and the acceleration devices present, the board can run SpaceOS workloads and use the DPU for inference.