CN0506 + ZC706 Quickstart

This guide provides instructions on how to setup CN0506 on the ZC706 platform.

https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/zc706.jpg

Required Hardware

  • EVAL-CN0506-FMCZ board

  • Xilinx ZC706 Evaluation Board Rev 1.0 or a later version

  • Power Cord and Adapter compatible with ZC706

  • SD Card 16 GB or higher

  • Micro USB Cable

  • Ethernet Cable

Required Software

  • Linux or Windows OS on a Host PC

  • UART Terminal (e.g TeraTerm, PuTTY)

  • iPerf3

Hardware Setup

  1. Connect the EVAL-CN0506-FMCZ to the low pin count (LPC) FMC connector on the ZC706 evaluation board.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/zc706_cn0506.jpg
  2. Connect the ZC706 USB-to-UART Bridge with Mini USB Connector (U52, J21) to the host PC using a Mini USB cable.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/zc706_usb.jpg
  3. Connect the Ethernet cable in the CN0506 M1 or M2 Ethernet port depending on your preference.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/zc706_eth.jpg
  4. Plug the power cord into the 12 V power jack 2×6 connector J22.

    Attention

    Do not switch on yet the Power On/Off Switch (SW1) and make sure that the switch and jumper settings are in default mode. Refer to the ZC706 User Guide for detailed default jumper settings information.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/zc706_power.jpg

Software Setup

  1. Download the latest Linux Image and flash the file to your 16 GB SD Card. Refer to Kuiper Linux for more detailed instruction.

  2. In your flashed Linux Image BOOT partition, copy the kernel to the root folder. The kernel will vary depending on the carrier platform. With ZC706, copy the uImage file in the zynq-common folder to the root folder or just outside the folder of the kernel.

  3. Copy the boot files to the root folder. The boot files can be found in the zynq-zed-adv7511-cn0506-mii or zynq-zed-adv7511-cn0506-rgmii folder depending on your needs. In this guide, we will copy all the files inside zynq-zed-adv7511-cn0506-mii folder to the root folder.

    Attention

    This is a critical step to follow because the EVAL-CN0506-FMCZ board needs the following files to communicate with the FPGA platform properly using the Analog Devices Linux Kuiper OS.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/zynq_boot_files.png
  4. Safely eject the SD Card from your host PC and insert it into your ZC706 SD Card Interface Connector (J30).

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/zc706_sdcard.jpg

Testing

Creating the setup

  1. Open your preferred UART terminal and connect to the correct COM Port. You can find out which port to connect to by going to Device Manager > Ports (COM & LPT) and looking for ‘USB Serial Device’. If you have multiple devices, try disconnecting the USB cable from your PC and see which port disappears. After plugging it back in remember the COM number.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/dev_manager.png
  2. Set the baud rate to 115200.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/putty.png
  3. Now you can turn on the board by flipping the power switch, and also start your serial connection from your PC. You should see some boot messages like these ones:

    Linux BOOT messages
    U-Boot 2018.01-21442-gf06dec3cab (Oct 17 2024 - 08:59:33 +0300), Build: jenkins-development-build_uboot-35
    
    Model: Zynq Zet
    
    In:    serial@e0001000
    Out:   serial@e0001000
    Err:   serial@e0001000
    Net:   ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id
    eth0: ethernet@e000b000
    reading uEnv.txt
    407 bytes read in 23 ms (16.6 KiB/s)
    Importing environment from SD ...
    Hit any key to stop autoboot:  0
    Device: sdhci@e0100000
    Manufacturer ID: 1d
    OEM: 4144
    Name: USDTran Speed: 50000000
    Rd Block Len: 512
    SD version 3.0
    High Capacity: Yes
    Capacity: 29.1 GiB
    Bus Width: 4-bit
    Erase Group Size: 512 Bytes
    reading uEnv.txt
    407 bytes read in 23 ms (16.6 KiB/s)
    Loaded environment from uEnv.txt
    Importing environment from SD ...
    Running uenvcmd ...
    Copying Linux from SD to RAM...
    reading uImage
    8412448 bytes read in 496 ms (16.2 MiB/s)
    reading devicetree.dtb
    19740 bytes read in 30 ms (642.6 KiB/s)
    ** Unable to read file uramdisk.image.gz **
    ## Booting kernel from Legacy Image at 03000000 ...
       Image Name:   Linux-6.1.70-284114-g2e8908932df
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    8412384 Bytes = 8 MiB
       Load Address: 00008000
       Entry Point:  00008000
       Verifying Checksum ... OK
    ## Flattened Device Tree blob at 02a00000
       Booting using the fdt blob at 0x2a00000
       Loading Kernel Image ... OK
       Loading Device Tree to 1eb12000, end 1eb19d1b ... OK
    
    Starting kernel ...
    
    Booting Linux on physical CPU 0x0
    Linux version 6.1.70-284114-g2e8908932dfd (jenkins@romlxbuild1) (arm-xilinx-linux-gnueabi-gcc.real (GCC) 12.2.0, GNU ld (GNU Binutils) 2.39.0.20220819) #1060 SMP PREEMPT Tue Mar 18 16:11:24 EET 2025
    CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
    CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    OF: fdt: Machine model: Xilinx Zynq ZC706
    OF: fdt: earlycon: stdout-path /amba@0/uart@E0001000 not found
    Memory policy: Data cache writealloc
    cma: Reserved 128 MiB at 0x16800000
    Zone ranges:
    Normal   [mem 0x0000000000000000-0x000000001fffffff]
    HighMem  empty
    Movable zone start for each node
    Early memory node ranges
    node   0: [mem 0x0000000000000000-0x000000001fffffff]
    Initmem setup node 0 [mem 0x0000000000000000-0x000000001fffffff]
    percpu: Embedded 11 pages/cpu s14420 r8192 d22444 u45056
    Built 1 zonelists, mobility grouping on.  Total pages: 130048
    Kernel command line: console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlycon rootfstype=ext4 rootwait clk_ignore_unused cpuidle.off=1
    Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
    mem auto-init: stack:all(zero), heap alloc:off, heap free:off
    Memory: 361900K/524288K available (12288K kernel code, 818K rwdata, 10376K rodata, 1024K init, 470K bss, 31316K reserved, 131072K cma-reserved, 0K highmem)
    rcu: Preemptible hierarchical RCU implementation.
    rcu:    RCU event tracing is enabled.
    rcu:    RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
    rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    efuse mapped to (ptrval)
    slcr mapped to (ptrval)
    L2C: platform modifies aux control register: 0x72360000 -> 0x72760000
    L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000
    L2C-310 erratum 769419 enabled
    L2C-310 enabling early BRESP for Cortex-A9
    L2C-310 full line of zeros enabled for Cortex-A9
    L2C-310 ID prefetch enabled, offset 1 lines
    L2C-310 dynamic clock gating enabled, standby mode enabled
    L2C-310 cache controller enabled, 8 ways, 512 kB
    L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001
    rcu: srcu_init: Setting srcu_struct sizes based on contention.
    zynq_clock_init: clkc starts at (ptrval)
    Zynq clock init
    sched_clock: 64 bits at 167MHz, resolution 6ns, wraps every 4398046511103ns
    clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x26703d7dd8, max_idle_ns: 440795208065 ns
    Switching to timer-based delay loop, resolution 6ns
    clocksource: ttc_clocksource: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 537538477 ns
    timer #0 at (ptrval), irq=25
    Console: colour dummy device 80x30
    Calibrating delay loop (skipped), value calculated using timer frequency.. 333.33 BogoMIPS (lpj=1666666)
    CPU: Testing write buffer coherency: ok
    CPU0: Spectre v2: using BPIALL workaround
    pid_max: default: 32768 minimum: 301
    Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
    Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
    CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    Setting up static identity map for 0x100000 - 0x100060
    rcu: Hierarchical SRCU implementation.
    rcu:    Max phase no-delay instances is 1000.
    smp: Bringing up secondary CPUs ...
    CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    CPU1: Spectre v2: using BPIALL workaround
    smp: Brought up 1 node, 2 CPUs
    SMP: Total of 2 processors activated (666.66 BogoMIPS).
    CPU: All CPU(s) started in SVC mode.
    devtmpfs: initialized
    VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
    clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    pinctrl core: initialized pinctrl subsystem
    NET: Registered PF_NETLINK/PF_ROUTE protocol family
    DMA: preallocated 256 KiB pool for atomic coherent allocations
    thermal_sys: Registered thermal governor 'step_wise'
    platform axi: Fixed dependency cycle(s) with /axi/interrupt-controller@f8f01000
    amba f8801000.etb: Fixed dependency cycle(s) with /replicator/out-ports/port@1/endpoint
    amba f8803000.tpiu: Fixed dependency cycle(s) with /replicator/out-ports/port@0/endpoint
    amba f8804000.funnel: Fixed dependency cycle(s) with /replicator/in-ports/port/endpoint
    amba f889c000.ptm: Fixed dependency cycle(s) with /axi/funnel@f8804000/in-ports/port@0/endpoint
    amba f889d000.ptm: Fixed dependency cycle(s) with /axi/funnel@f8804000/in-ports/port@1/endpoint
    hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
    hw-breakpoint: maximum watchpoint size is 4 bytes.
    e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 27, base_baud = 3125000) is a xuartps
    printk: console [ttyPS0] enabled
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    mc: Linux media interface: v0.10
    videodev: Linux video capture interface: v2.00
    pps_core: LinuxPPS API ver. 1 registered
    pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    PTP clock support registered
    jesd204: found 0 devices and 0 topologies
    FPGA manager framework
    Advanced Linux Sound Architecture Driver Initialized.
    clocksource: Switched to clocksource arm_global_timer
    NET: Registered PF_INET protocol family
    IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
    tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
    Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
    TCP bind hash table entries: 4096 (order: 4, 65536 bytes, linear)
    TCP: Hash tables configured (established 4096 bind 4096)
    UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
    UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
    NET: Registered PF_UNIX/PF_LOCAL protocol family
    RPC: Registered named UNIX socket transport module.
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    armv7-pmu f8891000.pmu: hw perfevents: no interrupt-affinity property, guessing.
    hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
    workingset: timestamp_bits=30 max_order=17 bucket_order=0
    NFS: Registering the id_resolver key type
    Key type id_resolver registered
    Key type id_legacy registered
    nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    fuse: init (API version 7.37)
    io scheduler mq-deadline registered
    io scheduler kyber registered
    zynq-pinctrl 700.pinctrl: zynq pinctrl initialized
    dma-pl330 f8003000.dma-controller: Loaded driver for PL330 DMAC-241330
    dma-pl330 f8003000.dma-controller:      DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16
    brd: module loaded
    loop: module loaded
    Registered mathworks_ip class
    SPI driver spidev has no spi_device_id for adi,swspi
    spi-nor spi0.0: found s25fl256s1, expected n25q128a11
    spi-nor spi0.0: s25fl256s1 (32768 Kbytes)
    5 fixed-partitions partitions found on MTD device spi0.0
    Creating 5 MTD partitions on "spi0.0":
    0x000000000000-0x000000500000 : "boot"
    0x000000500000-0x000000520000 : "bootenv"
    0x000000520000-0x000000540000 : "config"
    0x000000540000-0x000000fc0000 : "image"
    0x000000fc0000-0x000002000000 : "spare"
    MACsec IEEE 802.1AE
    tun: Universal TUN/TAP device driver, 1.6
    mdio_bus e000b000.ethernet-ffffffff: MDIO device at address 0 is missing.
    macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 42 (00:0a:35:00:01:22)
    macb e000c000.ethernet: invalid hw address, using random
    macb e000c000.ethernet eth1: Cadence GEM rev 0x00020118 at 0xe000c000 irq 43 (52:3f:8a:14:65:30)
    usbcore: registered new interface driver asix
    usbcore: registered new interface driver ax88179_178a
    usbcore: registered new interface driver cdc_ether
    usbcore: registered new interface driver net1080
    usbcore: registered new interface driver cdc_subset
    usbcore: registered new interface driver zaurus
    usbcore: registered new interface driver cdc_ncm
    usbcore: registered new interface driver r8153_ecm
    usbcore: registered new interface driver uas
    usbcore: registered new interface driver usb-storage
    usbcore: registered new interface driver usbserial_generic
    usbserial: USB Serial support registered for generic
    usbcore: registered new interface driver ftdi_sio
    usbserial: USB Serial support registered for FTDI USB Serial Device
    usbcore: registered new interface driver upd78f0730
    usbserial: USB Serial support registered for upd78f0730
    ULPI transceiver vendor/product ID 0x0451/0x1507
    Found TI TUSB1210 ULPI transceiver.
    ULPI integrity check: passed.
    ci_hdrc ci_hdrc.0: EHCI Host Controller
    ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
    ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
    usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
    usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    usb usb1: Product: EHCI Host Controller
    usb usb1: Manufacturer: Linux 6.1.70-284114-g2e8908932dfd ehci_hcd
    usb usb1: SerialNumber: ci_hdrc.0
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 1 port detected
    SPI driver ads7846 has no spi_device_id for ti,tsc2046
    SPI driver ads7846 has no spi_device_id for ti,ads7843
    SPI driver ads7846 has no spi_device_id for ti,ads7845
    SPI driver ads7846 has no spi_device_id for ti,ads7873
    i2c_dev: i2c /dev entries driver
    i2c 0-0039: Fixed dependency cycle(s) with /fpga-axi@0/axi_hdmi@70e00000/port/endpoint
    adv7511 0-0039: supply avdd not found, using dummy regulator
    adv7511 0-0039: supply dvdd not found, using dummy regulator
    adv7511 0-0039: supply pvdd not found, using dummy regulator
    adv7511 0-0039: supply bgvdd not found, using dummy regulator
    adv7511 0-0039: supply dvdd-3v not found, using dummy regulator
    at24 1-0050: supply vcc not found, using dummy regulator
    at24 1-0050: 256 byte 24c02 EEPROM, writable, 1 bytes/write
    gspca_main: v2.14.0 registered
    usbcore: registered new interface driver uvcvideo
    cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer with timeout 10s
    Xilinx Zynq CpuIdle Driver started
    failed to register cpuidle driver
    sdhci: Secure Digital Host Controller Interface driver
    sdhci: Copyright(c) Pierre Ossman
    sdhci-pltfm: SDHCI platform and OF driver helper
    ledtrig-cpu: registered to indicate activity on CPUs
    hid: raw HID events driver (C) Jiri Kosina
    usbcore: registered new interface driver usbhid
    usbhid: USB HID core driver
    SPI driver fb_seps525 has no spi_device_id for syncoam,seps525
    mmc0: SDHCI controller on e0100000.mmc [e0100000.mmc] using ADMA
    SPI driver adis16475 has no spi_device_id for adi,adis16470
    SPI driver adis16475 has no spi_device_id for adi,adis16475-1
    SPI driver adis16475 has no spi_device_id for adi,adis16475-2
    SPI driver adis16475 has no spi_device_id for adi,adis16475-3
    SPI driver adis16475 has no spi_device_id for adi,adis16477-1
    SPI driver adis16475 has no spi_device_id for adi,adis16477-2
    mmc0: new high speed SDHC card at address 0001
    SPI driver adis16475 has no spi_device_id for adi,adis16477-3
    SPI driver adis16475 has no spi_device_id for adi,adis16465-1
    SPI driver adis16475 has no spi_device_id for adi,adis16465-2
    SPI driver adis16475 has no spi_device_id for adi,adis16465-3
    mmcblk0: mmc0:0001 USD 29.1 GiB
    SPI driver adis16475 has no spi_device_id for adi,adis16467-1
    SPI driver adis16475 has no spi_device_id for adi,adis16467-2
    SPI driver adis16475 has no spi_device_id for adi,adis16467-3
    SPI driver adis16475 has no spi_device_id for adi,adis16500
    mmcblk0: p1 p2 p3
    SPI driver adis16475 has no spi_device_id for adi,adis16501
    SPI driver adis16475 has no spi_device_id for adi,adis16505-1
    SPI driver adis16475 has no spi_device_id for adi,adis16505-2
    SPI driver adis16475 has no spi_device_id for adi,adis16505-3
    SPI driver adis16475 has no spi_device_id for adi,adis16507-1
    SPI driver adis16475 has no spi_device_id for adi,adis16507-2
    SPI driver adis16475 has no spi_device_id for adi,adis16507-3
    SPI driver adis16475 has no spi_device_id for adi,adis16575-2
    SPI driver adis16475 has no spi_device_id for adi,adis16575-3
    SPI driver adis16475 has no spi_device_id for adi,adis16576-2
    SPI driver adis16475 has no spi_device_id for adi,adis16576-3
    SPI driver adis16475 has no spi_device_id for adi,adis16577-2
    SPI driver adis16475 has no spi_device_id for adi,adis16577-3
    axi_sysid 45000000.axi-sysid-0: AXI System ID core version (1.01.a) found
    axi_sysid 45000000.axi-sysid-0: [cn0506] [MII] on [zed] git branch <hdl_2023_r2> git <2156ac7e874a1dc321d9f64a325009fafe563419> clean [2024-11-01 10:04:45] UTC
    fpga_manager fpga0: Xilinx Zynq FPGA Manager registered
    usbcore: registered new interface driver snd-usb-audio
    axi-i2s 77600000.axi-i2s: probed, capture enabled, playback enabled
    NET: Registered PF_INET6 protocol family
    Segment Routing with IPv6
    In-situ OAM (IOAM) with IPv6
    sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    NET: Registered PF_PACKET protocol family
    NET: Registered PF_IEEE802154 protocol family
    Key type dns_resolver registered
    zynq_pm_remap_ocm: OCM pool is not available
    zynq_pm_suspend_init: Unable to map OCM.
    Registering SWP/SWPB emulation handler
    of-fpga-region fpga-full: FPGA Region probed
    [drm] Initialized axi_hdmi_drm 1.0.0 20120930 for 70e00000.axi_hdmi on minor 0
    axi-hdmi 70e00000.axi_hdmi: [drm] Cannot find any crtc or sizes
    axi-hdmi 70e00000.axi_hdmi: [drm] Cannot find any crtc or sizes
    axi-hdmi 70e00000.axi_hdmi: [drm] Cannot find any crtc or sizes
    debugfs: File 'Capture' in directory 'dapm' already present!
    of_cfs_init
    of_cfs_init: OK
    clk: Not disabling unused clocks
    ALSA device list:
    #0: HDMI monitor
    #1: ZED ADAU1761
    EXT4-fs (mmcblk0p2): recovery complete
    EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    VFS: Mounted root (ext4 filesystem) on device 179:2.
    devtmpfs: mounted
    Freeing unused kernel image (initmem) memory: 1024K
    Run /sbin/init as init process
    systemd[1]: System time before build time, advancing clock.
    systemd[1]: systemd 247.3-7+rpi1+deb11u6 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=unified)
    systemd[1]: Detected architecture arm.
    
    Welcome to Kuiper GNU/Linux 11.2 (bullseye)!
    
    systemd[1]: Set hostname to <analog>.
    systemd[1]: /lib/systemd/system/plymouth-start.service:16: Unit configured to use KillMode=none. This is unsafe, as it disables systemd's process lifecycle management for the service. Please update your service to use a safer KillMode=, such as 'mixed' or 'control-group'. Support for KillMode=none is deprecated and will eventually be removed.
    systemd[1]: Queued start job for default target Graphical Interface.
    random: crng init done
    systemd[1]: system-getty.slice: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    systemd[1]: Created slice system-getty.slice.
    [  OK  ] Created slice system-getty.slice.
    systemd[1]: Created slice system-modprobe.slice.
    [  OK  ] Created slice system-modprobe.slice.
    systemd[1]: Created slice system-serial\x2dgetty.slice.
    [  OK  ] Created slice system-serial\x2dgetty.slice.
    systemd[1]: Created slice system-systemd\x2dfsck.slice.
    [  OK  ] Created slice system-systemd\x2dfsck.slice.
    systemd[1]: Created slice User and Session Slice.
    [  OK  ] Created slice User and Session Slice.
    systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [  OK  ] Started Forward Password R…uests to Wall Directory Watch.
    systemd[1]: Condition check resulted in Arbitrary Executable File Formats File System Automount Point being skipped.
    systemd[1]: Reached target Slices.
    [  OK  ] Reached target Slices.
    systemd[1]: Reached target Swap.
    [  OK  ] Reached target Swap.
    systemd[1]: Listening on Syslog Socket.
    [  OK  ] Listening on Syslog Socket.
    systemd[1]: Listening on fsck to fsckd communication Socket.
    [  OK  ] Listening on fsck to fsckd communication Socket.
    systemd[1]: Listening on initctl Compatibility Named Pipe.
    [  OK  ] Listening on initctl Compatibility Named Pipe.
    systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
    systemd[1]: Listening on Journal Socket (/dev/log).
    [  OK  ] Listening on Journal Socket (/dev/log).
    systemd[1]: Listening on Journal Socket.
    [  OK  ] Listening on Journal Socket.
    systemd[1]: Listening on udev Control Socket.
    [  OK  ] Listening on udev Control Socket.
    systemd[1]: Listening on udev Kernel Socket.
    [  OK  ] Listening on udev Kernel Socket.
    systemd[1]: Condition check resulted in Huge Pages File System being skipped.
    systemd[1]: Condition check resulted in POSIX Message Queue File System being skipped.
    systemd[1]: Mounting RPC Pipe File System...
             Mounting RPC Pipe File System...
    systemd[1]: Mounting Kernel Debug File System...
             Mounting Kernel Debug File System...
    systemd[1]: Condition check resulted in Kernel Trace File System being skipped.
    systemd[1]: Condition check resulted in Kernel Module supporting RPCSEC_GSS being skipped.
    systemd[1]: Starting Restore / save the current clock...
             Starting Restore / save the current clock...
    systemd[1]: Starting Set the console keyboard layout...
             Starting Set the console keyboard layout...
    systemd[1]: Condition check resulted in Create list of static device nodes for the current kernel being skipped.
    systemd[1]: Starting Load Kernel Module configfs...
             Starting Load Kernel Module configfs...
    systemd[1]: Starting Load Kernel Module drm...
             Starting Load Kernel Module drm...
    systemd[1]: Starting Load Kernel Module fuse...
             Starting Load Kernel Module fuse...
    systemd[1]: Condition check resulted in Set Up Additional Binary Formats being skipped.
    systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
    systemd[1]: Starting Journal Service...
             Starting Journal Service...
    systemd[1]: Starting Load Kernel Modules...
             Starting Load Kernel Modules...
    systemd[1]: Starting Remount Root and Kernel File Systems...
             Starting Remount Root and Kernel File Systems...
    systemd[1]: Starting Coldplug All udev Devices...
             Starting Coldplug All udev Devices...
    systemd[1]: Mounted RPC Pipe File System.
    [  OK  ] Mounted RPC Pipe File System.
    systemd[1]: Mounted Kernel Debug File System.
    [  OK  ] Mounted Kernel Debug File System.
    systemd[1]: Finished Restore / save the current clock.
    [  OK  ] Finished Restore / save the current clock.
    systemd[1]: modprobe@configfs.service: Succeeded.
    systemd[1]: Finished Load Kernel Module configfs.
    [  OK  ] Finished Load Kernel Module configfs.
    systemd[1]: modprobe@drm.service: Succeeded.
    systemd[1]: Finished Load Kernel Module drm.
    [  OK  ] Finished Load Kernel Module drm.
    systemd[1]: modprobe@fuse.service: Succeeded.
    systemd[1]: Finished Load Kernel Module fuse.
    [  OK  ] Finished Load Kernel Module fuse.
    systemd[1]: Started Journal Service.
    [  OK  ] Started Journal Service.
    [FAILED] Failed to start Load Kernel Modules.
    See 'systemctl status systemd-modules-load.service' for details.
             Mounting FUSE Control File System...
             Mounting Kernel Configuration File System...
             Starting Apply Kernel Variables...
    EXT4-fs (mmcblk0p2): re-mounted. Quota mode: disabled.
    [  OK  ] Finished Set the console keyboard layout.
    [  OK  ] Finished Remount Root and Kernel File Systems.
    [  OK  ] Mounted FUSE Control File System.
    [  OK  ] Mounted Kernel Configuration File System.
    [  OK  ] Finished Apply Kernel Variables.
             Starting Flush Journal to Persistent Storage...
             Starting Load/Save Random Seed...
             Starting Create System Users...
    [  OK  ] Finished Coldplug All udev Devices.
             Starting Helper to synchronize boot up for ifupdown...
             Starting Wait for udev To …plete Device Initialization...
    [  OK  ] Finished Load/Save Random Seed.
    [  OK  ] Finished Create System Users.
             Starting Create Static Device Nodes in /dev...
    [  OK  ] Finished Helper to synchronize boot up for ifupdown.
    [  OK  ] Finished Flush Journal to Persistent Storage.
    [  OK  ] Finished Create Static Device Nodes in /dev.
    [  OK  ] Reached target Local File Systems (Pre).
             Starting Rule-based Manage…for Device Events and Files...
    [  OK  ] Started Rule-based Manager for Device Events and Files.
             Starting Show Plymouth Boot Screen...
    [  OK  ] Started Show Plymouth Boot Screen.
    [  OK  ] Started Forward Password R…s to Plymouth Directory Watch.
    [  OK  ] Reached target Local Encrypted Volumes.
    [  OK  ] Found device /dev/ttyPS0.
    [  OK  ] Found device /dev/disk/by-partuuid/a22286d2-01.
    [  OK  ] Finished Wait for udev To Complete Device Initialization.
             Starting File System Check…isk/by-partuuid/a22286d2-01...
             Starting Load Kernel Modules...
    [  OK  ] Started File System Check Daemon to report status.
    [FAILED] Failed to start Load Kernel Modules.
    See 'systemctl status systemd-modules-load.service' for details.
    [  OK  ] Finished File System Check…/disk/by-partuuid/a22286d2-01.
             Mounting /boot...
    [  OK  ] Mounted /boot.
    [  OK  ] Reached target Local File Systems.
             Starting Set console font and keymap...
             Starting Raise network interfaces...
             Starting Preprocess NFS configuration...
             Starting Tell Plymouth To Write Out Runtime Data...
             Starting Create Volatile Files and Directories...
    [  OK  ] Finished Set console font and keymap.
    [  OK  ] Finished Tell Plymouth To Write Out Runtime Data.
    [  OK  ] Finished Preprocess NFS configuration.
    [  OK  ] Reached target NFS client services.
    [  OK  ] Reached target Remote File Systems (Pre).
    [  OK  ] Reached target Remote File Systems.
    [  OK  ] Finished Create Volatile Files and Directories.
             Starting Network Time Synchronization...
             Starting Update UTMP about System Boot/Shutdown...
    [  OK  ] Finished Update UTMP about System Boot/Shutdown.
             Starting Load Kernel Modules...
    [  OK  ] Started Network Time Synchronization.
    [  OK  ] Finished Raise network interfaces.
    [  OK  ] Reached target System Time Set.
    [  OK  ] Reached target System Time Synchronized.
    [FAILED] Failed to start Load Kernel Modules.
    See 'systemctl status systemd-modules-load.service' for details.
    [  OK  ] Reached target System Initialization.
    [  OK  ] Started CUPS Scheduler.
    [  OK  ] Started Daily apt download activities.
    [  OK  ] Started Daily apt upgrade and clean activities.
    [  OK  ] Started Periodic ext4 Onli…ata Check for All Filesystems.
    [  OK  ] Started Discard unused blocks once a week.
    [  OK  ] Started Daily rotation of log files.
    [  OK  ] Started Daily man-db regeneration.
    [  OK  ] Started Daily Cleanup of Temporary Directories.
    [  OK  ] Reached target Paths.
    [  OK  ] Reached target Timers.
    [  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
    [  OK  ] Listening on CUPS Scheduler.
    [  OK  ] Listening on D-Bus System Message Bus Socket.
    [  OK  ] Listening on Erlang Port Mapper Daemon Activation Socket.
    [  OK  ] Listening on GPS (Global P…ioning System) Daemon Sockets.
    [  OK  ] Listening on triggerhappy.socket.
    [  OK  ] Reached target Sockets.
    [  OK  ] Reached target Basic System.
             Starting Analog Devices power up/down sequence...
             Starting Save/Restore Sound Card State...
             Starting Avahi mDNS/DNS-SD Stack...
    [  OK  ] Started Regular background program processing daemon.
    [  OK  ] Started D-Bus System Message Bus.
             Starting dphys-swapfile - …unt, and delete a swap file...
             Starting Remove Stale Onli…t4 Metadata Check Snapshots...
    [  OK  ] Started fan-control.
             Starting Fix DP audio and X11 for Jupiter...
             Starting Creating IIOD Context Attributes......
             Starting Authorization Manager...
             Starting DHCP Client Daemon...
             Starting LSB: Switch to on…nless shift key is pressed)...
             Starting LSB: rng-tools (Debian variant)...
             Starting System Logging Service...
             Starting User Login Management...
             Starting triggerhappy global hotkey daemon...
             Starting Disk Manager...
             Starting WPA supplicant...
    [  OK  ] Finished Save/Restore Sound Card State.
    [  OK  ] Started triggerhappy global hotkey daemon.
    [  OK  ] Finished Fix DP audio and X11 for Jupiter.
    [  OK  ] Started System Logging Service.
    [  OK  ] Finished dphys-swapfile - …mount, and delete a swap file.
    [  OK  ] Started DHCP Client Daemon.
    [  OK  ] Started LSB: rng-tools (Debian variant).
    [  OK  ] Started Avahi mDNS/DNS-SD Stack.
    [  OK  ] Started Authorization Manager.
    [  OK  ] Started WPA supplicant.
    [  OK  ] Reached target Network.
    [  OK  ] Reached target Network is Online.
    [  OK  ] Reached target Sound Card.
             Starting Modem Manager...
             Starting CUPS Scheduler...
    [  OK  ] Started Erlang Port Mapper Daemon.
             Starting HTTP based time synchronization tool...
             Starting Internet superserver...
             Starting /etc/rc.local Compatibility...
             Starting OpenBSD Secure Shell server...
             Starting Permit User Sessions...
    [  OK  ] Started LSB: Switch to ond…(unless shift key is pressed).
    [  OK  ] Started Internet superserver.
    [  OK  ] Started /etc/rc.local Compatibility.
    [  OK  ] Started User Login Management.
    [  OK  ] Started Unattended Upgrades Shutdown.
    [  OK  ] Finished Permit User Sessions.
             Starting Light Display Manager...
             Starting Hold until boot process finishes up...
    [  OK  ] Started HTTP based time synchronization tool.
             Starting Manage, Install and Generate Color Profiles...
    [FAILED] Failed to start VNC Server for X11.
    
    Raspbian GNU/Linux 11 analog ttyPS0
    
    analog login: root (automatic login)
    
    Linux analog 6.1.70-284114-g2e8908932dfd #1060 SMP PREEMPT Tue Mar 18 16:11:24 EET 2025 armv7l
    
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    

Login Information

user: analog password: analog

Useful commands

The commands below can be run in the serial terminal connected to the FPGA. They will help you learn more about the system you are using.

  • To find out the IP of the FPGA board, run the following command and take the IP specified at “eth0 inet” or “eth1 inet” (depending on which of the two Ethernet ports on the EVAL-CN0506-FMCZ you connected to):

    ~$
    
    ifconfig
    

    After finding out the IP address of your board, you can also connect to it through SSH from another computer on the same network using the command:

    ~$
    
    ssh analog@<board_ip_address>
    
  • To see the IIO devices detected, run:

    ~$
    
    iio_info | grep iio:device
    
  • To power off the system, run the following command, and wait for the final message to be printed, then power off the FPGA board from the switch as well.

    ~$
    
    poweroff
    
  • To reboot the system, run:

    ~$
    
    reboot
    

Important

Even though this is Linux, this is a persistent file system. Care should be taken not to corrupt the file system – please shut down things, don’t just turn off the power switch. Depending on your monitor, the standard power off could be hiding. You can do this from the terminal as well with sudo shutdown -h now or the above-mentioned command for powering off.

Performing iPerf3

  1. Make sure you have installed your favorite terminal emulator (in this case, TeraTerm) on your Host PC.

  2. Connect the UART USB Cable connection from ZC706 to your Host PC. Your Host PC should have a CP2103 USB to UART Bridge Controller driver installed or up to date. This is important so your PC can communicate with the FPGA board.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/1_uart_installation.png
  3. Connect an Ethernet Cable connection from CN0506 M1 to your Ethernet-capable Host PC. Make sure the Host PC is also connected to the Internet using Wi-Fi or Ethernet.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/pc_connect.jpg
  4. Bridge network connections so we can install necessary tools such as iPerf3 for ZC706 through the Internet. Go to Control Panel > Network and Internet > Network Connections. To create a Network Bridge between your Wi-Fi/Ethernet Internet and CN0506 Ethernet, select the two network connections, right-click, and select “Bridge Connections.”

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/2_bridge_installation.png
  5. Launch TeraTerm and make a new serial connection with the designated COM port. Click Serial, choose the correct COM port number, then click OK.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/3_tera_term_serial.png
  6. Change the baud rate from 9600 to 115200. Go to Setup > Serial Port… A dialog box will pop up and then change the Speed to 115200. Click “New setting.”

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/4_serial_config.png https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/5_serial_config_baud_115200.png
  7. Install iPerf3 on your Linux machine. Enter in the terminal line, then write and enter

    apt-get install iperf3
    
    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/6_aptget_install_iperf3.png
  8. The performance test will also require your Host PC to be the iPerf3 server and the carrier is the client. The server should be run first before the client. Install iPerf3 on your Host PC. Go to the Downloads page and download the necessary files depending on your Host PC.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/7_windows_download_iperf3.png
  9. Open your Host PC’s terminal (e.g. Windows PowerShell) and navigate through the iPerf3 directory.

    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/8_ms_powershell.png
  10. Get the IP address of the connected Ethernet port of your Host PC using the command: “ipconfig”. Take note of the IP address of the connected Ethernet cable because this will vary from time to time. In this case, we have the IP address 169.254.6.62 of “Ethernet adapter Ethernet” which corresponds to your Host PC’s Ethernet port.

    ipconfig
    
    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/9_ipconfig.png
  11. In your UART terminal (TeraTerm), get the IP address of the connected Ethernet port of CN0506. Use the command “ip addr”. Take note of the IP address of the connected Ethernet cable because this will vary from time to time. In this case, we have the IP address 169.254.7.196 of “eth1” which corresponds to the M1 Ethernet port of CN0506.

    ip addr
    
    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/10_ipaddr.png
  12. In your Host PC’s terminal. run the iperf3 as the server. In this case of Windows PowerShell, use the command:

    .\iperf3.exe -s -B 169.254.6.62
    
    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/11_iperf_exe_b.png

    This will run the iperf3 from the PC as the server (-s) and bound to its Ethernet port having the address 169.254.6.62. It is acceptable to keep the server running since this will wait for connections from the client.

  13. In your UART terminal (TeraTerm), you will need to run the iperf3 client for each Ethernet port so you can verify its performance by using “iperf3 -c <IP address of server> -B <IP address of client>. Enter the following commands:

    iperf3 -c 169.254.6.62 -B 169.254.7.196
    
    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/12_performance_run_b_s.png
  14. Use the command “-R” to reverse the direction of the performance test.

    iperf3 -c 169.254.6.62 -B 169.254.7.196 -R
    
    https://media.githubusercontent.com/media/analogdevicesinc/documentation/main/docs/solutions/reference-designs/eval-cn0506-fmcz/images/performance_run_b_s_r.png
  15. We’re done with the basic iPerf3 performance test! If you want to go further with the test, this is your time to shine and this is high time for you to get started with your application development.