Revision History
2025.2 Changes: Yocto flow, NVMe in the second M.2 slot, display and camera fixes
New
Yocto / EDF flow for all targets (
./build.sh yocto --target <target>), next to PetaLinux. It produces a full SD-card image (rootfs.wic.xz) with the same Hailo stack (HailoRT,hailo-pcidriver and firmware 4.23.0, Hailo GStreamer elements), the same demo scripts and the YOLOv5m HEF. See Yocto.New page Run and test the design: PCIe link check, Hailo-8 driver and firmware,
hailortcliinference (about 150 FPS for the bundled YOLOv5m), camera capture, a camera-to-Hailo pipeline without a monitor, the multi-camera demo, an NVMe SSD in the second M.2 slot, and the ISP controls.PYNQ-ZU (Yocto): the on-board WILC3000 Wi-Fi works as a station (
wlan0) — kernel driver with WILC3000 support, firmware,wpa_supplicantand thewifi-sta-setuphelper. No credentials are included in the image. A login prompt is started on the console UART only.Yocto images: hostname
<board>-hailo-2025-2, the design’s kernel arguments (cma=1536M—cma=1000Monuzev— andxlnx_mixer.connect_drm_bridge=1), and the tools the demo scripts need (modetest, GStreamerv4l2src/kmssinkand friends).New block diagrams generated by
docs/source/images/gen_block_diagram.py: architecture, end-to-end pipeline and the PCIe / M.2 connection of each target.
Fixed
NVMe SSD in the second M.2 slot could not be enumerated (
zcu106_hpc0,uzev). The SSD trained its link but its BAR0 was never assigned, so there was no/dev/nvme*. The root-port memory windows are now placed in the 32-bit address space (0xB000_0000, 128 MB per root port), so devices with non-prefetchable BARs (NVMe) enumerate. Requires a new XSA and Linux image. See PCIe address map.Display: kernel crash at the first mode set (Yocto). The device-tree overrides of the
misc_clk_0/misc_clk_1fixed clocks used the PetaLinux numbering, which is the reverse of the numbering of the Yocto (SDT) flow. The display Clocking Wizard was told its 250 MHz input ran at 100 MHz and did not lock when the mode was set. The Yocto BSPs now use the SDT numbering.Magenta tint on every camera picture. The ISP pipeline driver wrote the red, green and blue gamma tables to the wrong colour planes, and its default green curve differed from red and blue. A kernel patch puts each table on its own plane and makes the default gamma 2.0 on all three channels (PetaLinux and Yocto).
ISP gains and white-balance threshold from the device tree were ignored. A second kernel patch makes
xlnx,rgain,xlnx,bgainandxlnx,pawbthe defaults of thered_gain,blue_gainandthresholdcontrols (PetaLinux and Yocto).hailodemo.shdrove the monitor’s preferred mode (for example 2560x1440, or a refresh rate above 60 Hz) that the display pipeline cannot produce. It now sets 1920x1080 at 60 Hz and shows each camera in a 960x540 quadrant (PetaLinux and Yocto).Yocto: Ethernet passed no traffic on ZCU104 / ZCU106. The device tree now describes the DP83867 PHY with its RGMII delays, and gives the port a fixed MAC address.
Yocto: the board’s kernel arguments and hostname were not applied (the EDF boot script does not read
APPEND, and the EDF distribution overrode the hostname). They are now set throughBSP_EXTRA_BOOTARGSand aforcevariablehostname.The Yocto images now include the three DRM patches for the Video Mixer in DRM-bridge mode and the
hailo-pcifind_vma()locking patch, as the PetaLinux images already did.build.sh packagenow rewrites a boot-image zip when the images it contains were rebuilt after the zip was written (it used to keep the old zip).
Earlier 2025.2 changes
Migrated all designs and PetaLinux projects to Vivado / Vitis / PetaLinux 2025.2
Moved to the SDT (System Device Tree) flow for PetaLinux configuration
HailoRT and
hailo_pciupdated to 4.23.0; backported thefind_vma()/mmap_read_lockfix as a kernel ≥ 6.5 hotfix for the v4.23 driverAdded three Xilinx DRM kernel patches required when v_mix runs in DRM-bridge mode (mixer NULL-deref, double-cleanup on unbind, vblank shutdown ordering); kernel cmdline now passes
xlnx_mixer.connect_drm_bridge=1meta-hailois now consumed as a git submodule tracking thehailo8-scarthgapbranch and copied into each project at configure time;packagegroup-hailo-tappasno longer pulls in the removedtappas-appslegacy recipeLICENSE_PATHis rewritten from=to+=in the project-local copy ofmeta-hailo-tappas/conf/layer.confsometa-qt5’s licenses survive (qtbase otherwise failsdo_create_spdx)Added a
check_ca_workaroundMake target that fails fast with the one-time sudo symlink fix for the PetaLinux 2025.2 eSDKgit-nativeCA-bundle relocation issueZCU104 BSP adds an explicit
sdhci1device-tree override (Opsero ZynqMP designs export a minimal sdhci1 node; without the override SD init fails with -110)UltraZed-EV BSP forces PMUFW/FSBL/TF-A/Linux serial to PSU_UART_0 (gen-machine-conf defaults to UART_1 on this carrier in 2025.2)
2024.1 Changes
Removed VVAS multiscaler accelerator from all designs (Xilinx has no support for 2024.1)
Added AXI4-Streaming Data FIFO to MIPI video pipes, between MIPI CSI2 RX and ISP Pipeline IPs
Improved documentation, centralized target design info to JSON file
RPi camera IOs are properly driven
ISP Pipeline IP updated to version v2023.2_update1 of the Vitis_Libraries repo
ISP Pipeline now uses built-in Linux driver (linux-xlnx/drivers/media/platform/xilinx/xilinx-isppipeline.c)
Removed all Vitis-AI and VVAS recipes from BSPs
Improved example scripts: use max res of connected display, display only connected cameras
2022.1 Changes
First revision