ADRV9002
Recommended for New Designs
The ADRV9002 is a highly integrated RF transceiver that has dual-channel transmitters, dual-channel receivers, integrated synthesizers, and digital signal...
Datasheet
ADRV9002 on Analog.com
Hi there,
I am bringing up an ADRV9002 evaluation board interfaced to a Lattice FPGA host via the FMC connector. Custom RISC-V firmware on the FPGA drives the ADRV9002 over SPI using the ADI no-OS driver. SPI register access seems to works well, but facing challenges at the ARM bootloader stage as below.
Problem Statement:
Getting arm_StartStatus_Check returns bootStatus = 4 (STREAM_CSUM_ERR) within 1 ms of arm_Start. All prior steps (HwOpen, spi_Verify, profileutil_Parse, InitAnalog, AhbSpiBridge_Enable, Stream_Image_Write, arm_Image_Write, arm_Profile_Write, arm_PfirProfiles_Write) complete successfully. ARM image upload verified byte-perfect by read-back across PROG and DATA memory regions.
System Environment:
I have tried below Firmware Blob combination:
Same STREAM_CSUM_ERR for both:
Both produce identical bootloader failure at the same poll cycle.
Failure Detail
reg[0x010E] = 0x40
reg[0x010F] = 0x00
bootState = 4 (STREAM_CSUM_ERR)
0x00E0: 01 01 FF 4D E4 DB 7B 47 (objectId = 0x01, subErr = 0x01)
Referring to EngineerZone post #593128 ("Issue with ADRV9002 custom profile no-OS"), TES versions and no-OS API versions have a known coupling (TES 0.22 <-> API 68.0.6; TES 0.27 <-> API 68.14.10). The chip's ROM bootloader CRC table is silicon-revision-specific and only accepts the stream binary version that was current at silicon production.
Our blob is v0.7.15.0; C0 silicon ROM appears to expect v0.7.18 based on the declaration in TES top_level.txt.
I could not locate a pre-assembled stream binary in the TES installed, - only the .asm/.txt source for runtime assembly by AnalogDevices.Adrv9001.ProfileGen.dll.
Will loading the correct version of pre-assembled Navassa_Stream_C0_0.7.18.0.bin help?
Or is there any guide to overcome this roadblock?
Thanks in advance, and I will gladly capture and post any further data if required.
RahulMushini - Moved from Support ADRV9001 – ADRV9007 to Linux Software Drivers. Post date updated from Wednesday, June 3, 2026 11:03 AM UTC to Thursday, June 4, 2026 2:27 PM UTC to reflect the move.
Hello,
I do not have sufficient expertise with the ADRV9002 and Lattice to provide a definitive answer at this time but I will make sure this question is seen by someone with the appropriate background to give you a proper response.
Thank you for your patience.
Hi,
Thanks for your response.
A brief follow-up to add a few details that were missing from the original post. These may help narrow down the matching stream version on your side.
Eval board identifiers:
ADRV9002NP/W1/PCBZADRV9001CE 02BNP/W1 = 0.03–3 GHzADRV9002BBCZ2232 (week 32, 2022)S22-02712022080200078Silicon registers read back from the part:
reg[0x0004] = 0xC0 (silicon C0)reg[0x000A] = 0x01 (variant)reg[0x000B] = 0x56, reg[0x000C] = 0x04 (ADRV9002)Toolchain in use:
68.14.13Adrv9001Server_C0_68.20.12Navassa_EvaluationFw_C0_0.22.64 (taken from the TES install)Additional notes since the original post:
adi_adrv9001_Stream_Version_Get matches what was uploaded (v0.7.18.0), so the SPI write path appears faithful.bootState = 4 within roughly one millisecond of arm_Start.0x00E0 consistently start 0x01 0x00 (objectId, subErr), while bytes 2 through 7 vary between runs.If a pre-assembled stream binary matched to this date code / lot is available, that would be the quickest path forward for us. Equally, any guidance on how to assemble an older stream version offline from the TES tooling would be appreciated.
Thank you for the help.
Hi TudorTicudean ,
A gentle follow-up - May I ask whether there is any update on this?
I fully understand the question may still be in the queue. Any pointer in the meantime would be much appreciated.
Thank you for your time and support.
Hi jiayongc,
Thanks for the extra details.
I've escalated this to three engineers: two who previously worked on the ADRV9002 no-OS and one who usually works with Lattice platforms.
One thing worth mentioning while you wait. The no-OS ADRV9001 project is built and tested on Xilinx boards (ZCU102, ZC706, ZedBoard). Lattice is not an officially supported platform for now, at least. Even once someone gets back to you, I'm not sure how much support we'll be able to offer for a platform we don't officially support for ADRV9002. We'll do our best but I just want to set the right expectations.
We'll get back to you as soon as soon as possible.