ZedBoard Quick Start Guide
This guide provides step by step instructions on how to set up the EVAL-ADRV9002 on:
- ZedBoard
The supported revision is C or higher.
All the products described on this page include ESD (electrostatic discharge) sensitive devices. Electrostatic charges as high as 4000V readily accumulate on the human body or test equipment and can discharge without detection. Although the boards feature ESD protection circuitry, permanent damage may occur on devices subjected to high-energy electrostatic discharges. Therefore, proper ESD precautions are recommended to avoid performance degradation or loss of functionality. This includes removing static charge on external equipment, cables, or antennas before connecting to the device.
LVDS Support
According to the 7 Series SelectIO guide section ‘LVDS and LVDS_25’ and Table 1-43, the LVDS I/O standard (VADJ 1.8V) is not supported on High Range banks.
Since the evaluation board can only operate with VADJ set to 1.8V and the FMC connector on the ZedBoard is mapped to HR banks, the LVDS interface is not supported. Only CMOS operation is possible.
Using Linux as software
Necessary files
Note
The SD card includes several folders in the root directory of the BOOT partition. In order to configure the SD card to work with a specific FPGA board and ADI hardware, several files must be copied onto the root directory. Using the host PC, drag and drop the required files onto the BOOT partition, and use the EJECT function when removing the SD card from the reader.
The following files are needed for the system to boot:
HDL boot image:
BOOT.binLinux Kernel image:
uImageLinux device tree:
devicetree.dtb
They can either be taken from the SD card – already generated by us, or you can build them manually:
Instructions on how to choose the boot files from the SD card can be found in the Platform-Specific Manual Steps section from here Hardware Configuration.
Instructions on how to manually build the boot files from source can be found here:
ADRV9001 HDL Project build documentation. More HDL build details at Build an HDL project.
Important
Some projects provide multiple devicetree files in the SD card’s boot folders. Make sure you select the devicetree that matches your specific use case.
Required Software
SD Card 16GB imaged with Kuiper
A UART terminal (Putty/Tera Term/Minicom, etc.) with baud rate 115200 (8N1)
Required Hardware
ZedBoard Rev C or later and its power supply
EVAL-ADRV9002 FMC board
SD card with at least 16GB of memory
Micro-USB cable
Ethernet cable
Signal generator
Signal analyzer
Signal synthesizer (required only if using external clock source)
1x SMA cable for signal generator
1x SMA cable for signal analyzer
1x SMA cable for signal synthesizer (if using external clock)
(Optional) USB keyboard & mouse and a HDMI compatible monitor
More details as to why you need these, can be found at Prerequisites.
Testing
Creating the setup
All the products described on this page include ESD (electrostatic discharge) sensitive devices. Electrostatic charges as high as 4000V readily accumulate on the human body or test equipment and can discharge without detection. Although the boards feature ESD protection circuitry, permanent damage may occur on devices subjected to high-energy electrostatic discharges. Therefore, proper ESD precautions are recommended to avoid performance degradation or loss of functionality. This includes removing static charge on external equipment, cables, or antennas before connecting to the device.
Warning
Before executing below steps, VADJ must be set to 1.8V. This can be done by changing VADJ jumper (JP18) from default (2V5) to 1V8.
On the evaluation board, there is a red LED close to the FMC connector. This LED indicates if VADJ voltage exceeded 2.0V. If the LED does not turn off after a few seconds after boot, VADJ is exceeding the recommended level, decreasing board lifetime and potentially causing permanent damage to the IC.
Follow the steps in this order, to avoid damaging the components:
Connect the EVAL-ADRV9002 FMC board to the FPGA carrier FMC socket.
On the FMC card, set the switch to select clock source between:
an on-board 38.4 MHz VCTCXO (default)
external (via J501) 10 MHz to 1000 MHz / +13 dBm
Connect the UART port of ZedBoard to a PC via Micro-USB (J14).
Insert the SD card into the slot, located on the underside of ZedBoard (J12).
Configure ZedBoard for SD BOOT: boot (JP7-JP11) and MIO0 (JP6) jumpers set to SD card mode, in accordance with the picture shown below.
Connect 12V power supply to barrel jack.
Turn on the power switch (SW8) on the FPGA board. Green Power LED (LD13) should illuminate.
Wait approximately 15 seconds. The blue Done LED (LD12) should illuminate.
Observe kernel and serial console messages on your terminal.
You can also connect a monitor, keyboard and mouse directly to the board for a local connection. The UART connection is still recommended for debugging purposes. For the local connection, follow these additional steps:
Plug your HDMI display device into the HDMI Video Connector (J9).
Plug your USB mouse/keyboard into the USB OTG Micro-B Connector (J13). You will have to use a USB hub to connect both mouse and keyboard. Some keyboards have a mouse or touch pad sharing the same USB connection or wireless dongle. This can be used to eliminate the use of a USB hub.
Wait another ~30 seconds for the HDMI display device to start showing signs of life.
Note
The USB OTG circuit requires specific jumper settings for Host mode. Ensure the following jumper settings on the ZedBoard (these are the defaults; verify them if USB is not working):
JP2 → Short (enables 5V output to USB OTG connector)
JP3 → Short (Host mode)
See also
For more detailed information on ZedBoard jumper settings, check the ZedBoard Hardware User Guide (chapter “Configuration modes”) here.
Boot messages
The following is what is printed in the serial console, after you have connected to the proper ttyUSB or COM port:
Note
If you are using a local connection (keyboard, mouse, monitor), you can
view the boot log by opening a terminal and running the dmesg command.
U-Boot 2018.01-21442-gf06dec3cab (Oct 17 2024 - 08:59:33 +0300), Build: jenkins-development-build_uboot-35 Model: Zynq Zed Development Board Board: Xilinx Zynq Silicon: v3.1 DRAM: ECC disabled 512 MiB MMC: sdhci@e0100000: 0 (SD) SF: Detected s25fl256s_64k with page size 256 Bytes, erase size 64 KiB, total 32 MiB 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 25 ms (15.6 KiB/s) Importing environment from SD ... Hit any key to stop autoboot: 0 Device: sdhci@e0100000 Manufacturer ID: 3 OEM: 5344 Name: SS16G Tran Speed: 50000000 Rd Block Len: 512 SD version 3.0 High Capacity: Yes Capacity: 14.8 GiB Bus Width: 4-bit Erase Group Size: 512 Bytes reading uEnv.txt 407 bytes read in 25 ms (15.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 489 ms (16.4 MiB/s) reading devicetree.dtb 24518 bytes read in 32 ms (748 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 1eb11000, end 1eb19fc5 ... 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 ZED 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: 361880K/524288K available (12288K kernel code, 818K rwdata, 10376K rodata, 1024K init, 470K bss, 31336K 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 spi1.0: found s25fl256s1, expected n25q128a11 spi-nor spi1.0: s25fl256s1 (32768 Kbytes) 5 fixed-partitions partitions found on MTD device spi1.0 Creating 5 MTD partitions on "spi1.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 hwmon hwmon0: temp1_input not attached to any thermal zone macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 47 (00:e0:22:02:be:d7) 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 e624 SPI driver adis16475 has no spi_device_id for adi,adis16477-3 mmcblk0: mmc0:e624 SS16G 14.8 GiB 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: p1 p2 p3 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 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: [adrv9001] [CMOS] on [zed] git branch <hdl_2023_r2> git <2156ac7e874a1dc321d9f64a325009fafe563419> clean [2024-11-01 09:22:49] 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 random: crng init done adrv9002 spi0.0: adrv9002-phy Rev 12.0, Firmware 0.22.39, Stream 0.7.15.0, API version: 68.14.10 successfully initialized cf_axi_adc 44a00000.axi-adrv9002-rx-lpc: ADI AIM (10.03.) at 0x44A00000 mapped to 0x25449c81 probed ADC ADRV9002 as MASTER cf_axi_tdd 44a0c800.axi-adrv9002-core-tdd1-lpc: Analog Devices CF_AXI_TDD MASTER (1.00.a) cf_axi_tdd 44a0cc00.axi-adrv9002-core-tdd2-lpc: Analog Devices CF_AXI_TDD MASTER (1.00.a) cf_axi_dds 44a0a000.axi-adrv9002-tx-lpc: Analog Devices CF_AXI_DDS_DDS MASTER (9.02.b) at 0x44A0A000 mapped to 0x3be021a4, probed DDS ADRV9002 cf_axi_dds 44a0c000.axi-adrv9002-tx2-lpc: Analog Devices CF_AXI_DDS_DDS MASTER (9.02.b) at 0x44A0C000 mapped to 0x3a02b350, probed DDS ADRV9002 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): 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. 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]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'. systemd[1]: Failed to start Load Kernel Modules. [FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details. systemd[1]: Mounting FUSE Control File System... Mounting FUSE Control File System... systemd[1]: Mounting Kernel Configuration File System... Mounting Kernel Configuration File System... systemd[1]: Starting Apply Kernel Variables... Starting Apply Kernel Variables... systemd[1]: Started Journal Service. [ OK ] Started Journal Service. [ OK ] Finished Set the console keyboard layout. [ OK ] Mounted FUSE Control File System. [ OK ] Finished Remount Root and Kernel File Systems. [ 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 Load/Save Random Seed. [ OK ] Finished Create System Users. [ OK ] Finished Coldplug All udev Devices. Starting Helper to synchronize boot up for ifupdown... Starting Create Static Device Nodes in /dev... Starting Wait for udev To …plete Device Initialization... [ 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 Preprocess NFS configuration. [ OK ] Finished Tell Plymouth To Write Out Runtime Data. [ 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. [ OK ] Started Network Time Synchronization. [ OK ] Reached target System Time Set. [ OK ] Reached target System Time Synchronized. Starting Load Kernel Modules... [ OK ] Finished Raise network interfaces. [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 ] Started System Logging Service. [ OK ] Finished Save/Restore Sound Card State. [ OK ] Started triggerhappy global hotkey daemon. [ OK ] Finished Fix DP audio and X11 for Jupiter. [ OK ] Started DHCP Client Daemon. [ OK ] Started LSB: Switch to ond…(unless shift key is pressed). [ OK ] Finished dphys-swapfile - …mount, and delete a swap file. [ 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: rng-tools (Debian variant). [ OK ] Started User Login Management. [ OK ] Started Unattended Upgrades Shutdown. [ OK ] Started /etc/rc.local Compatibility. [ OK ] Started Internet superserver. [ OK ] Finished Permit User Sessions. Starting Light Display Manager... Starting Hold until boot process finishes up... [ OK ] Started HTTP based time synchronization tool. [ OK ] Started Modem Manager. Starting Manage, Install and Generate Color Profiles... [ OK ] Finished Analog Devices power up/down sequence. 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. Last login: Mon Mar 9 17:20:57 GMT 2026 on ttyPS0
Useful commands for the serial terminal
The below commands are to be run in the serial terminal connected to the FPGA.
To find out the IP of the FPGA board, run the following command and take the IP specified at “eth0 inet”:
~$
ifconfig
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 – always shut down properly, don’t
just turn off the power switch. You can do this from the terminal with
sudo shutdown -h now or the above-mentioned poweroff command.
If you are using a local display connection, you can also use the GUI power off button:
Using no-OS as software
Necessary files
The following files are needed for the system to boot:
HDL boot file:
system_top.xsano-OS project: projects/adrv9001
Instructions on how to build the boot files from source can be found below:
ADRV9001 no-OS Example Project. More no-OS build details at No-OS Build Guide.
ADRV9001 HDL Project. More HDL build details at Build an HDL project.
Required software
AMD Xilinx Vivado and Vitis (downloading Vitis from here will include Vivado as well)
An UART terminal (Putty/Tera Term/Minicom, etc.), Baud rate 115200 (8N1)
Required hardware
ZedBoard Rev C or later and its power supply
EVAL-ADRV9002 FMC evaluation board
2x Micro-USB cables, one for UART and one for JTAG
2x SMA cable for loopback
More details as to why you need these, can be found at Prerequisites.
Testing
Creating the setup
All the products described on this page include ESD (electrostatic discharge) sensitive devices. Electrostatic charges as high as 4000V readily accumulate on the human body or test equipment and can discharge without detection. Although the boards feature ESD protection circuitry, permanent damage may occur on devices subjected to high-energy electrostatic discharges. Therefore, proper ESD precautions are recommended to avoid performance degradation or loss of functionality. This includes removing static charge on external equipment, cables, or antennas before connecting to the device.
Note
This setup is made by creating a physical loopback between the RX and the TX channel.
Warning
Before executing below steps, VADJ must be set to 1.8V. This can be done by changing VADJ jumper (JP18) from default (2V5) to 1V8.
On the evaluation board, there is a red LED close to the FMC connector. This LED indicates if VADJ voltage exceeded 2.0V. If the LED does not turn off after a few seconds after boot, VADJ is exceeding the recommended level, decreasing board lifetime and potentially causing permanent damage to the IC.
Follow the steps in this order, to avoid damaging the components:
Connect the EVAL-ADRV9002 FMC board to the FPGA carrier FMC socket.
Configure ZedBoard for JTAG boot mode (mode MIO[5:2] jumpers in the position 0,0,0,0).
Connect USB UART (Micro-USB) to your host PC (J14).
Connect USB JTAG (Micro-USB) to your host PC (J17).
Connect 12V power supply to barrel jack.
Turn on the power switch (SW8) on the FPGA board.
Build and run the project using the steps shown in here.
Observe console output messages on your terminal (use the first ttyUSB or COM port registered).
See also
For more detailed information on ZedBoard jumper settings, check the ZedBoard Hardware User Guide (chapter “Configuration modes”) here.
Console output
The following is what is printed in the serial console, after you have connected to the proper ttyUSB or COM port:
Hello ADRV9002 Rev 12.0, Firmware 0.22.39, Stream 0.7.15.0, API version: 68.14.13 successfully initialized axi-adrv9002-rx-lpc: Successfully inititalized (61437988 Hz) axi-adrv9002-tx-lpc: Successfully inititalized (61437988 Hz) axi-adrv9002-rx2-lpc: Successfully inititalized (61437988 Hz) axi-adrv9002-tx2-lpc: Successfully inititalized (61437988 Hz) Bye