Return to the Design Tutorials Overview.

Design Overview

This module shows how to build a Qt video application demonstrating the following features:
  • Display via PS DP (DRM framework)
  • Video capture from USB webcam or virtual video device (vivid) (V4L2 framework)
  • GUI overlay via GPU with OpenGL (using Qt framework)


Design Components

This module requires the following components:
  • zcu102_dp_only
  • pmu_fw
  • petalinux_bsp
    • zynqmp_fsbl
    • bl31
    • u-boot
    • kernel
    • device tree (system-dm5.dts)
    • rootfs
  • video_lib
  • video_qt2

Build Flow Tutorials

PL DP Only Design

This tutorial show how to build the DP only Vivado design that implements the minimum required to make DisplayPort work.

  • Create a Vivado project. Select 'es1' instead if you are targeting a rev D board with ES1 silicon.
    % cd $TRD_HOME/pl/zcu102_dp_only
    % vivado -s ./scripts/create_project.tcl -tclargs -platform zcu102 -silicon es2
  • Implement the design and generate a bitstream
  • Copy the generated bitstream to the PetaLinux directory or alternatively use the pre-built bit file that is already bundled with the PetaLinux BSP.
    % cp -f project/zcu102_dp_only.runs/impl_1/zcu102_dp_only_wrapper.bit $TRD_HOME/apu/petalinux_bsp/images/linux

PMU Firmware

Please refer to design module 1 - PMU firmware for instructions or skip this step if you have built the PMU firmware in a previous module.

PetaLinux BSP

This tutorial shows how to build the Linux image and boot image using the PetaLinux build tool.

  • The petalinux-config step can be skipped if this was already done in a previous module.
    % cd $TRD_HOME/apu/petalinux_bsp
    % petalinux-config --get-hw-description=./hw-description --oldconfig
  • Select the device-tree matching design module 5 and build all Linux image components. If you have run petalinux-build in a previous module, the build step will be incremental.
    % cd subsystems/linux/configs/device-tree
    % cp system-dm5.dts system-top.dts
    % petalinux-build
    % cd -
  • Create a boot image.
    % cd images/linux
    % petalinux-package --boot --bif=dm5.bif --force
  • Copy the generated boot image and Linux image to the dm5 SD card directory.
    % mkdir -p $TRD_HOME/images/dm5/bin
    % cp BOOT.BIN image.ub $TRD_HOME/images/dm5

Video Qt Application

This tutorial shows how to build the video library and the video Qt application.

  • Set up the Qt environment and generate a Makefile for the Qt project. Make sure the TRD_HOME and PETALINUX environment variables are set before running this step.
    % cd $TRD_HOME/apu/video_app/video_qt2
    % source
    % qmake -r -spec linux-oe-g++
  • Create a new XSDK workspace.
    % cd ..
    % xsdk -workspace . &
  • Click 'Import Project' from the welcome screen, browse to the current working directory and make sure both the video_lib and video_qt2 projects are selected. Click finish.
  • Right-click the video_lib project and select 'C/C++ Build Settings'. Navigate to 'Symbols' and remove the 'WITH_SDSOC' symbol from the defined symbols panel by clicking the delete icon with the red X.
  • Right-click the video_qt project and click 'Build Project'.
  • Copy the generated video_qt2 executable to the dm5 SD card directory.
    % cp video_qt2/video_qt2 video_qt2/ video_qt2/ $TRD_HOME/images/dm5/bin/

Run Flow Tutorial

  • See here for board setup instructions.
  • Copy all the files from the $TRD_HOME/images/dm5 SD card directory to a FAT formatted SD card.
  • Power on the board to boot the images; make sure INIT_B, done and all power rail LEDs are lit green.
  • After ~30 seconds, the display will turn on and the application will start automatically, targeting the max supported resolution of the monitor (one of 3840x2160 or 1920x1080 or 1280x720).
  • Upon application exit, use the below login and password to log into the framebuffer or serial console:
    root@Xilinx-ZCU102-2016_3 login: root
    password: root
  • The SD card file system is mounted at /media/card
  • To re-start the TRD application type
  • The user can now control the application from the GUI's control bar (bottom) displayed on the monitor.
  • The following video sources are available:
    • Virtual Video Device (VIVID): emulates a USB webcam purely in software
    • USB Webcam (UVC): using the universla video class driver
  • The video info panel (top left) shows essential settings/statistics.
  • The CPU utilization graph (top right) shows CPU load for each of the four A53 cores.