Wiki

This version is outdated by a newer approved version.DiffThis version (11 Sep 2023 10:52) was approved by Sergiu Cuciurean.The Previously approved version (11 Sep 2023 07:14) is available.Diff

This is an old revision of the document!


ZCU102 GMSL User Guide

Development kit contents

2 x FPGA Carrier boards: ZCU102 eval kit

1 x GMSL Deserializer: MAX96724-BAK-EVK

1 x GMSL FMC adapter

2 x 16GB SD cards

1 x SFP+ Ethernet cable

FPGA SD Card Image

The SD-card Image for the Xilinx ZCU102 board can be found here: gmsl_driver.img.xz

After downloading the file, extract the compressed image and write it to the SD-card using Balena Ethcher or Win32-Disk-Imager.

More details on how to extract a compressed image and write it on the SD card on Linux and Windows can be found here: Writing an image onto the SD card


System Setup

The default FMC Vadj on ZCU102 is 1.8V and the MIPI D-PHY requires 1.2V

The following tutorial explains how to use the ZCU102 system controller GUI and configure the Vadj to 1.2V.

Solder a pcb connector on the FMC adapter's J5 and configure the jumpers as the following.

Place a 0 OHM resistor on R88.

GMSL Deserializer Board Setup (outdated)

GMSL Deserializer Board Setup (outdated)

Connect the FMC adapter to the EVAL board and place it on the ZCU102's HPC0 port. With a jumper wire (blue wire in the image below) connect the GMSL deserializer board MFP8 pin to the PMOD 0, PIN 1.

Insert the SD-card into the Xilinx ZCU102 board and connect the GMSL deserializer board USB cable to a PC.


Move the i2c switch in the OFF position on the GMSL deserializer board.

Power-up the ZCU102 and check if a new COM port appears in Device Manager.

Configure the GMSL video pipeline using the GMSL GUI tool and the GMSL config files

In the uC information area, press on “Release Port” and “Connect port”

The corresponding COM port should appear in the dropdown bar. Now load the config files from the “File” tab → Load (.cpp) file.

Now load the files in the following order:

  1. Tier4-ISX021-4CH-pipe.cpp
  2. Tier4-ISX021-MAX9295_80.cpp
  3. Tier4-ISX021-MAX9295_84.cpp
  4. Tier4-ISX021-MAX9295_C0.cpp
  5. Tier4-ISX021-MAX9295_C4.cpp

Move back the i2c switches in the ON state


ZCU102 FPGA Board Setup

Connect the Deserializer and the FMC adapter to ZCU102 FMC HPC1 connector.

 Status of the Adapter and D-Phy (still LEDs)

Connect an ethernet cable to the ZCU102 RJ45 port.

Attach to the serial terminal using the first USB com port that appears after connecting the ZCU102's USB, with a baud rate of 115200.

Ubuntu credentials user:analog/pass:analog
#Configure the video pipeline and the cameras (invalid argument messages can be ignored)
$ cd /home/analog/Workspace/ZCU102
$ ./media_cfg.sh
 
#Start streaming to another host
$ cd /home/analog/Workspace/gstreamer
$ ./server.sh **[IP of the viewing station]**
$ ./server.sh 192.168.0.103

Now the streams are running on ports 5004 to 5007, depending on the configured number of cameras


Displaying the Video

On the receiving side, G-streamer must be installed

Now open 4 instances of g-streamer for each port(5004-5007)

(Click) On another ZCU102

(Click) On another ZCU102

$ gst-launch-1.0 udpsrc caps=“application/x-rtp, sampling=YCbCr-4:2:2, depth=(string)8, width=(string)1920, height=(string )1080” port=“5004” ! rtpvrawdepay ! videoconvert ! autovideosink

$ gst-launch-1.0 udpsrc caps=“application/x-rtp, sampling=YCbCr-4:2:2, depth=(string)8, width=(string)1920, height=(string )1080” port=“5005” ! rtpvrawdepay ! videoconvert ! autovideosink

$ gst-launch-1.0 udpsrc caps=“application/x-rtp, sampling=YCbCr-4:2:2, depth=(string)8, width=(string)1920, height=(string )1080” port=“5006” ! rtpvrawdepay ! videoconvert ! autovideosink

$ gst-launch-1.0 udpsrc caps=“application/x-rtp, sampling=YCbCr-4:2:2, depth=(string)8, width=(string)1920, height=(string )1080” port=“5007” ! rtpvrawdepay ! videoconvert ! autovideosink

(Click) On x86 workstation

(Click) On x86 workstation

$ gst-launch-1.0 udpsrc caps=“application/x-rtp, sampling=YCbCr-4:2:2, depth=(string)8, width=(string)1920, height=(string )1080” port=“5004” ! rtpvrawdepay ! videoconvert ! fpsdisplaysink video-sink=xvimagesink text-overlay=true sync=false

$ gst-launch-1.0 udpsrc caps=“application/x-rtp, sampling=YCbCr-4:2:2, depth=(string)8, width=(string)1920, height=(string )1080” port=“5005” ! rtpvrawdepay ! videoconvert ! fpsdisplaysink video-sink=xvimagesink text-overlay=true sync=false

$ gst-launch-1.0 udpsrc caps=“application/x-rtp, sampling=YCbCr-4:2:2, depth=(string)8, width=(string)1920, height=(string )1080” port=“5006” ! rtpvrawdepay ! videoconvert ! fpsdisplaysink video-sink=xvimagesink text-overlay=true sync=false

$ gst-launch-1.0 udpsrc caps=“application/x-rtp, sampling=YCbCr-4:2:2, depth=(string)8, width=(string)1920, height=(string )1080” port=“5007” ! rtpvrawdepay ! videoconvert ! fpsdisplaysink video-sink=xvimagesink text-overlay=true sync=false


Configure the system for a different number of cameras

Copy the devicetree from the folder that matches the number of connected cameras

$ sudo mount /dev/mmcblk0p1 /mnt
$ cd /mnt
$ ls ZCU102/device_tree/
   tier4_1cam  tier4_2cam  tier4_3cam  tier4_4cam
$ sudo cp ZCU102/device_tree/tier4_2cam/system.dtb .
$ sudo reboot
playground/gmsl-zcu102-guide.1694422359.txt.gz · Last modified: 11 Sep 2023 10:52 by Sergiu Cuciurean