This page is deprecated and is no longer being updated. The content is being retained for reference. For more information about running Ubuntu on Zynq UltraScale+ MPSoC, please refer to Canonical Ubuntu



Document History

DateAuthorVersion

Description Of Version

20 June 2019Surender Polsani   1.0
  • Initial version of step by step guide to build the Ubuntu Desktop for Zynq UltraScale+ MPSoC with integrated VCU and Gstreamer

Summary

The ZCU106 is a general-purpose evaluation board for rapid-prototyping based on the ZU7EV silicon part and package in the 16 nm FinFET Zynq® UltraScale+™ MPSoC. The ZU7EV device integrates a quad core Arm® Cortex™-A53 processing system (PS) and a dual core Arm Cortex-R5 real-time processor, which provides application developers an unprecedented level of heterogeneous multiprocessing. The ZCU106 evaluation board provides a flexible prototyping platform with high-speed DDR4 memory interfaces, FMC expansion ports, multi-gigabit per second serial transceivers, video codec unit (VCU), several peripheral interfaces, and FPGA fabric for customized designs.

This Tech-Tip covers step by step instructions to build and boot Ubuntu Desktop on the Zynq® UltraScale+™ MPSoC with VCU and Gstreamer targeting the ZCU106 board.

HDMI Video Display Design:



NOTE: In this wiki we are using VCU TRD DM7 Design and TRD bsp for latest changes applied on VCU and gstreamer.

The following Zynq® UltraScale+™ MPSoC PS and PL components are used in this design


Software Stack used for this design


Requirements


Files Provided

Zcu106_Ubuntu_Desktop_Release_2019_1.zip

Archived file
contains the following files/folders:

  1. Hardware
  2. HDF_File
  3. Ready_to_test_images
  4. Ubuntu_rootfs
  5. Petalinux_bsp


Procedure to build from sources


This section covers the following topics


Creating hardware design using Vivado


This section explains the procedure to create the hardware design using 2019.1 Vivado Design suite.




Fig: source the project.tcl file


This TCL script will do the following

Preparing Linux Images using Petalinux 2019.1

Creating the petalinux project



          $ cd <petalinux-project>


Configuring the kernel

         $ petalinux-config -c kernel

Configuring the Rootfs:

            $ petalinux-config -c rootfs

              Filesystem Packages->libs->libmali-xlnx->[*] libmali-xlnx

              Filesystem Packages->libs->libmali-xlnx->[*] libmali-xlnx-dev

             Filesystem Packages->misc->hdmi-module->[*] kernel-module-hdmi

          $  cp project-spec/meta-user/recipes-bsp/device-tree/files/vcu_hdmitx.dtsi project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

 

          / {

           chosen {

                           bootargs = "earlycon clk_ignore_unused consoleblank=0 cma=1700M uio_pdrv_genirq.of_id=generic-uio root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait ";

                           stdout-path = "serial0:115200n8";

                        };

             };

      $ petalinux-build

Creating bootable linux images

Preparing the SD card with bootable Images:

            $  cp -rf build/tmp/sysroots-components/zynqmp/kernel-module-vcu/lib/modules/4.19.0-xilinx-v2019.1/extra/* /<path to sd root partition>/root/modules/

           $   cp -rf build/tmp/sysroots-components/zynqmp/kernel-module-hdmi/lib/modules/4.19.0-xilinx-v2019.1/extra/*  /<path to sd root partition>/root/modules/

           $  cp  build/tmp/sysroots-components/zynqmpev/kernel-module-mali/lib/modules/4.19.0-xilinx-v2019.1/extra/mali.ko  /<path to sd root partition>/root/modules/

           $   cp build/tmp/sysroots-components/zynqmp/vcu-firmware/lib/firmware/*  /<path to sd root partition>/lib/firmware/


 
Preparing the SD card with pre-built Images:


Steps for Windows PC:




Steps for Linux PC


ZCU106 Board Setup:



Steps to execute the demo:


                                                    Fig:Ubuntu Desktop



                                                          Fig:Hard glmark2



                                                               Fig: OSG 3D Car Application

Running the VCU Test Case:

$ modetest -D a0070000.v_mix -w 36:alpha:150

Run the below pipeline or run gst-launch.sh script located at /root directory.

$ gst-launch-1.0 filesrc location=/root/1080p_nv12.yuv ! videoparse format=nv12 width=1920 height=1080 ! omxh265enc ! h265parse ! omxh265dec latency-mode=normal ! queue max-size-bytes=0 ! kmssink bus-id=a0070000.v_mix plane-id=34

NOTE: In rootfs we integrated latest VCU firmware and gstreamer with required all plugins. You can try different test cases on VCU with gstreamer.



Conclusion:


Appendix A:File description in Design directory

Zcu106_Ubuntu_Desktop_Release_2019_1: