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
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
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.
Connect the Deserializer and the FMC adapter to ZCU102 FMC HPC1 connector.
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.
Connect an ethernet cable to the ZCU102 RJ45 port
Or connect the cable to the SFP0 port
#Configure the interface #In this case we use ZCU102's SFP0 $ ls -l /sys/class/net/ total 0 lrwxrwxrwx 1 root root 0 Mar 20 16:32 can0 -> ../../devices/platform/axi/ff070000.can/net/can0 lrwxrwxrwx 1 root root 0 Mar 20 16:32 eth0 -> ../../devices/platform/axi/a0000000.ethernet/net/eth0 lrwxrwxrwx 1 root root 0 Mar 20 16:32 eth1 -> ../../devices/platform/axi/a0000000.ethernet/net/eth1 lrwxrwxrwx 1 root root 0 Mar 20 16:32 eth2 -> ../../devices/platform/axi/ff0e0000.ethernet/net/eth2 lrwxrwxrwx 1 root root 0 Mar 20 16:32 lo -> ../../devices/virtual/net/lo lrwxrwxrwx 1 root root 0 Mar 20 16:32 sit0 -> ../../devices/virtual/net/sit0
#Set the MTU and ip $ sudo ip link set mtu 9000 dev eth1 up $ sudo ip addr add 192.168.5.1/24 dev eth1 $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000 link/sit 0.0.0.0 brd 0.0.0.0 3: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10 link/can 5: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether 96:e8:9a:83:fc:f6 brd ff:ff:ff:ff:ff:ff 6: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000 link/ether 8e:2e:6e:7d:a8:f2 brd ff:ff:ff:ff:ff:ff inet 192.168.5.1/24 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::8c2e:6eff:fe7d:a8f2/64 scope link valid_lft forever preferred_lft forever 7: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether e2:43:6c:e2:ae:42 brd ff:ff:ff:ff:ff:ff
#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.5.2
Now the streams are running on ports 5004 to 5007, depending on the configured number of cameras
On the receiving side, G-streamer must be installed
Now open 4 instances of g-streamer for each port(5004-5007)
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