Post Go back to editing

ADRV9026 EVM with Intel FPGA Stratix 10 in no-os platform

Category: Software
Product Number: ADRV9026

Dear sir,

We are trying to bring up the ADRV9026 EVM with Intel FPGA Stratix 10 in no-os platform. We are following the github repo
Using this repo we are able to initialize ADRV9025 and verified SPI.Clocks on EVK is fine ,we probed clock signals and verified.
We are following the rest of the initialization procedure as per the Madura API documentation attached.
As per this document  we are calling all the APIs.We are able to complete the following 3 steps .We verified SPI by reading vendor ID.
We are using the ARM binaries from the latest GUI installation folder,and stream binary we have taken from the above mentioned github repo.
Next step is to adi_adrv9025_PreMcsInit_NonBroadcast().Here we are facing CPU Stuck in Bootup mode error and unable to move further.
Please  note  that we have already done AD9528 clock configurations and verified.
Kindly let us know if we are doing anything wrong in the procedure.
Also how do we resolve the CPU Stuck in Bootup error from this stage.Please provide some contact of anyone who can support us on ADRV9026 to debug further

Best Regards
K Venkateswarlu

Thread Notes

  • Can you please share us the complete error log where it is failing in Premcs non broad cast phase . 

    Usually the issue might be because of following reasons:

    • Check the resource files generated from the TES GUI , if there is any Mismatch between Binaries, API and stream file. You should load both ARM binaries generated from the same SW version.
    • Clock issues.- Device clock needs to match with what is programmed and meet the timing requirements. Probe the device clock near the TRx device clock input and see if it is at proper amplitude and frequency .
    • SPI issue : Verify the ARM check sum using ArmChecksumTableGet () API, attached the script for reference . To check whether the SPI interface is fine can you try executing the  adi_adrv9025_SpiVerify() . Are you able to write and readback from the scratch pad registers(0xA) Refer to the attached  SPI interface debug note  ADRV9026 SPI Interface Debug Note 

    #################################################################################
    #GUI Version: 6.4.0.17
    #DLL Version: 6.4.0.14
    #Cmd Server Version: 6.4.0.14
    #FPGA Version: 0xD900000A
    #ARM Version: 6.4.0.6(ADI_ADRV9010_ARMBUILD_RELEASE)
    #StreamVersion: 9.4.0.1
    #################################################################################
    
    #Import Reference to the DLL
    import System
    import clr
    import time
    from System import Array
    clr.AddReferenceToFileAndPath("C:\\Program Files\\Analog Devices\\ADRV9025 Transceiver Evaluation Software_x64_FULL\\adrvtrx_dll.dll")
    from adrv9010_dll import AdiEvaluationSystem
    from adrv9010_dll import Types
    from adrv9010_dll import Ad9528Types
    
    def spiRead(address):
        data = adrv9010.Hal.SpiByteRead(address, 0)
        print "SPI Read Address " + hex(address) + ": " + hex(data[1])
    
    def spiWrite(address, data):
        adrv9010.Hal.SpiByteWrite(address, data)
        print "SPI Write Address " + hex(address) + ": " + hex(data)
    
    #Create an Instance of the Class
    link = AdiEvaluationSystem.Instance	
    connect = False
    
    if (link.IsConnected() == False):
        connect = True
        link.platform.board.Client.Connect("192.168.1.10", 55556) 
        print "Connecting"
    
    if (link.IsConnected()):
        adrv9010 = link.Adrv9010Get(1)
        print "Connected"
        ##### YOUR CODE GOES HERE #####
        #checksumValid = 0
        u = Types.adi_adrv9010_ChecksumTable_t() 
    
        v=Array.CreateInstance(Types.adi_adrv9010_Checksum_t,1)
        #checksum1 =Array[Types.adi_adrv9010_Checksum_t]()
        a= link.platform.board.Adrv9010Device.Arm.ArmChecksumTableGet(u,1)
        for i in u:
        print len(v)
      
        v=i;
        print ("buildChecksum = %d","runChecksum= %d",v.buildChecksum,v.runChecksum)
        
        
        print checksum.fwErrorCode
        print checksum.fwError
        #print checksum.buildChecksum
        #print checksum.runChecksum
        print a[1]
        
        
    else:
        print "Not Connected"
    
    if (connect):
        link.platform.board.Client.Disconnect()
        print "Disconnected"

    • Check the resource files generated from the TES GUI , if there is any Mismatch between Binaries, API and stream file. You should load both ARM binaries generated from the same SW version.
    • reply: We checked for any binary mismatch.We are using ADRV9025_FW.bin and ADRV9025_DPDCORE_FW.bin file generated from Same GUI version.Stream Binary we are taking from repo https://github.com/analogdevicesinc/no-OS/tree/main/projects/adrv902x as mentioned earlier since we cant generate it from GUI  since it is for Intel board.
    • Clock issues.- Device clock needs to match with what is programmed and meet the timing requirements. Probe the device clock near the TRx device clock input and see if it is at proper amplitude and frequency
    • reply: we have check clock frequency of 245.76MHz. we probed with spectrum analyzer with open ended cable so level is -25dB.
    • SPI issue : Verify the ARM check sum using ArmChecksumTableGet () API, attached the script for reference . To check whether the SPI interface is fine can you try executing the  adi_adrv9025_SpiVerify() . Are you able to write and readback from the scratch pad registers(0xA) Refer to the attached  SPI interface debug note
    • reply:SPI functionality verified using adi_adrv9025_SpiVerify() we are able to write and read back.Confirmed this by reading vendor id and Writing to scratch pad registers and reading back.
    • Please refer to the attached link for the Premcs nonbroadcast function debug . https://ez.analog.com/wide-band-rf-transceivers/design-support-adrv9026/f/q-a/120617/adrv9026-adi_adrv9025_premcsinit_nonbroadcast-api-function-error-debug
    • reply:We used adi_adrv9025_ArmMemWrite  and adi_adrv9025_ArmMemRead and we are able to read and write the data from arm memory.
    •  Check Rbias resistor value is correct it should be 4.99K and the voltage across should be ~ 0.5 V. 
    • reply: resister is mounted on EVM(R216),we have powered on  standalone evm  without connecting Statix10 Dev kit ,we probed across the resistor,we got 0V
    •  Hello
       running ad9528_setup
      no_os_spi_init
      no_os_spibus_init
      no_os_spibus_init ret: 0
       before  gpio_ops_direction_output
       no_os_gpio_direction_output done
       inside ad9528_spi_write_n
      1st ad9528_spi_write_n Done
      2nd ad9528_spi_write_n Done
       ad9528  reset Success 
       inside ad9528_spi_write_n
       ad9528_spi_write_n Success 
      
       inside ad9528_spi_write_n
       Address 0x6 read data is 3
       Product_id read data is 300ff
       Ventor_id lsb 8 bit  read data is 456
       Ventor_id msb 8 bit  read data is 4
       Chip_id read data is 300ff05
      
        inside ad9528_spi_write_n
      AD9528_PLL1_REF_A_DIVIDER read data is 4
      
        inside ad9528_spi_write_n
      AD9528_PLL1_REF_B_DIVIDER read data is 4
      
        inside ad9528_spi_write_n
      AD9528_PLL1_FEEDBACK_DIVIDER read data is 4
      
        inside ad9528_spi_write_n
      AD9528_PLL1_CHARGE_PUMP_CTRL read data is 130a
      
        inside ad9528_spi_write_n
      AD9528_PLL1_CTRL read data is 40428
      
        inside ad9528_spi_write_n
      AD9528_PLL2_CHARGE_PUMP read data is e6
      
        inside ad9528_spi_write_n
      AD9528_PLL2_FEEDBACK_DIVIDER_AB read data is 87
      
        inside ad9528_spi_write_n
      AD9528_PLL2_CTRL read data is 3
      
        inside ad9528_spi_write_n
      AD9528_PLL2_VCO_CTRL read data is 0
      
        inside ad9528_spi_write_n
      AD9528_PLL2_VCO_DIVIDER read data is 3
      
        inside ad9528_spi_write_n
      AD9528_PLL2_R1_DIVIDER read data is 1
      
        inside ad9528_spi_write_n
      AD9528_PLL2_N2_DIVIDER read data is 9
      
        inside ad9528_spi_write_n
      AD9528_PLL2_LOOP_FILTER_CTRL read data is 3a
      
        inside ad9528_spi_write_n
       AD9528_CHANNEL_OUTPUT(0) read data is 9f0000
      
        inside ad9528_spi_write_n
       AD9528_CHANNEL_OUTPUT(1) read data is 40000
      
        inside ad9528_spi_write_n
       AD9528_CHANNEL_OUTPUT(3) read data is 9f0000
      
        inside ad9528_spi_write_n
       inside ad9528_spi_write_n
       AD9528_CHANNEL_OUTPUT(12) read data is 8000
      
        inside ad9528_spi_write_n
       AD9528_CHANNEL_OUTPUT(13) read data is 40000
      
        inside ad9528_spi_write_n
      AD9528_CHANNEL_PD_EN read data is ff4
      
        inside ad9528_spi_write_n
      AD9528_CHANNEL_SYNC_IGNORE read data is 0
      
        inside ad9528_spi_write_n
      AD9528_SYSREF_K_DIVIDER read data is 200
      
        inside ad9528_spi_write_n
      AD9528_SYSREF_CTRL read data is 9060
      
        inside ad9528_spi_write_n
      AD9528_PD_EN read data is 10
      
        inside ad9528_spi_write_n
       inside ad9528_spi_write_n
      AD9528_PLL2_VCO_CTRL read data is 1
      
        inside ad9528_spi_write_n
       inside ad9528_spi_write_n
      AD9528_SYSREF_CTRL read data is 9160
      
        inside ad9528_spi_write_n
      AD9528_STAT_MON0 read data is 1
      
        inside ad9528_spi_write_n
      AD9528_STAT_MON1 read data is 7
      
        inside ad9528_spi_write_n
      AD9528_STAT_PIN_EN read data is c
      
        inside ad9528_spi_write_n
       inside ad9528_spi_write_n
      AD9528_READBACK read data is 1
      
        inside ad9528_spi_write_n
       inside ad9528_spi_write_n
      AD9528_CHANNEL_SYNC read data is 0
      
        inside ad9528_spi_write_n
      AD9528 VCXO ok
      PLL2 locked
      AD9528_READBACK read data is e7
      
       ad9528 setup done
      adrv9025_init
      adrv9025_setup
       running no_os_clk_enable
       inside ad9528_spi_write_n
      no_os_clk_enable ret: 0
      adi_adrv9025_HwOpen
      adi_common_hal_HwOpen
      no_os_HwOpen
       before  gpio_ops_direction_output
      no_os_gpio_direction_output done
      no_os_spi_init
      no_os_gpio_set_value() done
      <adi_common_hal: 34> adi_hal_HwOpen halError: 0
      <adi_adrv9025: 70> adi_common_hal_HwOpen recoveryAction: 0
      adi_adrv9025_HwReset
      
      runningadi_adrv9025_HwVerify
       <adi_common_hal.c: 162> adi_common_hal_HwVerify
       second condition
      no_os_HwOpen
       before  gpio_ops_direction_output
      no_os_gpio_direction_output done
      no_os_spi_init
      no_os_gpio_set_value() done
      <adi_common_hal.c: 173> adi_hal_HwVerify halError: 0
      adi_common_hal_Wait_ms recoveryAction: 0
      adi_adrv9025_SpiCfgSet
      running adi_adrv9025_SpiVerify
       runningadi_adrv9025_HwVerify
       <adi_common_hal.c: 162> adi_common_hal_HwVerify
       second condition
      no_os_HwOpen
       before  gpio_ops_direction_output
      no_os_gpio_direction_output done
      no_os_spi_init
      no_os_gpio_set_value() done
      <adi_common_hal.c: 173> adi_hal_HwVerify halError: 0
       VENDOR_ID_0 read value is 56
       VENDOR_ID_1 read value is 4
      adi_adrv9025_HwOpen ret: 0
      adrv9025_JsonParseInitTxSettings: thb1Interpolation  = 1
      adrv9025_JsonParseInitTxSettings: thb1Interpolation  = 1
      adrv9025_JsonParseInitTxSettings: thb1Interpolation  = 1
      adrv9025_JsonParseInitTxSettings: thb1Interpolation  = 1
      adi_adrv9025_ConfigFileLoad done
      jesd204M =8 
      jesd204K =32 
      jesd204Np =16 
      jesd204Np =1 
      serializerLanesEnabled =0 
      serializerLanesEnabled =15 
      adi_adrv9025_UtilityInitFileLoad done
      adrv9025-phy Rev 0, API version: 6.4.0.14 found
      adrv9025_PadConfigsSet
      tx profile valid 
      rx profile valid 
      adi_adrv9025_ProfilesVerify done
      dev_clk == 245760 adrv9025_ClocksSet done
      serializerLanesEnabled =15  , 15 
      serializerLanesEnabled =0  , 0 
      serializerLanesEnabled =0  , 0 
      adi_adrv9025_Initialize done 
      adi_adrv9025_StreamImageLoad done 
      adi_adrv9025_CpuImageLoad done 
      adi_adrv9025_RxGainTableLoad done 
      adi_adrv9025_TxAttenTableLoad done 
      adrv9025_AdcProfilesInit done 
      adi_adrv9025_CpuAdcProfilesWrite done 
      init->clocks.tx12LoSelect: 1
      init->clocks.rx34LoSelect: 1
      adi_adrv9025_CpuProfileWrite done 
      adi_adrv9025_CpuStart done 
      adrv9025_BfWriteCacheEn done 
      adi_adrv9025_PreMcsInit_v2 done 
      File close succes
      PLL status = 0x1
      running adi_adrv9025_PreMcsInit_NonBroadCast
      running adi_adrv9025_PreMcsInit_NonBroadCast 1
      running adi_adrv9025_PreMcsInit_NonBroadCast 2
      running adi_adrv9025_PreMcsInit_NonBroadCast 3
      running adi_adrv9025_PreMcsInit_NonBroadCast 4
      running adi_adrv9025_CpuStartStatusCheck
      Trace 3...
      ADI_ERROR_RETURN: -4
      ADI_ERROR_RETURN: -4
      ERROR: : adrv9025_setup:1181 has failed.
      ERR: AD9026_TEST_902x/adrv9025.c:940:adrv9025_init(): adrv9025_init: adrv9025_setup failed (-4)
      ERR: AD9026_TEST_902x/basic_example.c:386:main(): error: adrv9025_init() failed
      Error -4.
       got 0V.
  • e checked for any binary mismatch.We are using ADRV9025_FW.bin and ADRV9025_DPDCORE_FW.bin file generated from Same GUI version.Stream Binary we are taking from repo https://github.com/analogdevicesinc/no-OS/tree/main/projects/adrv902x as mentioned earlier since we cant generate it from GUI  since it is for Intel board.

    What is the use case used ? The binaries are dependent on the use case used. You can connect to the Madura TES GUI in demo mode and then generate the init files where you would get the  initdata.c, initdata.h , main.c and the resources folder . The Resource folder will contain ADRV9025_FW.bin and ADRV9025_DPDCORE_FW.bin and Stream binary as well.

    reply: we have check clock frequency of 245.76MHz. we probed with spectrum analyzer with open ended cable so level is -25dB.

    -25dBm seems very less .Below is the recommended spec from datasheet for the clock. 

  • Hi,

    We have regenerated all the binaries ( ADRV9025_FW.bin and ADRV9025_DPDCORE_FW.bin and Stream binary) from TES GUI in demo mode. But still we are observing " failed with CpuBootStatus_e: 1 - : CPU is stuck in Powerup mode ".Please find the attached logs. 

    Kindly provide some inputs how to proceed further.


     Hello
     running ad9528_setup
    no_os_spibus_init
    no_os_spibus_init ret: 0
    1st ad9528_spi_write_n Done
    2nd ad9528_spi_write_n Done
     ad9528  reset Success 
     ad9528_spi_write_n Success 
    
     Address 0x6 read data is 3
     Product_id read data is 300ff
     Ventor_id lsb 8 bit  read data is 456
     Ventor_id msb 8 bit  read data is 4
     Chip_id read data is 300ff05
    
     AD9528_PLL1_REF_A_DIVIDER read data is 4
    
     AD9528_PLL1_REF_B_DIVIDER read data is 4
    
     AD9528_PLL1_FEEDBACK_DIVIDER read data is 4
    
     AD9528_PLL1_CHARGE_PUMP_CTRL read data is 130a
    
     AD9528_PLL1_CTRL read data is 40428
    
     AD9528_PLL2_CHARGE_PUMP read data is e6
    
     AD9528_PLL2_FEEDBACK_DIVIDER_AB read data is 87
    
     AD9528_PLL2_CTRL read data is 3
    
     AD9528_PLL2_VCO_CTRL read data is 0
    
     AD9528_PLL2_VCO_DIVIDER read data is 3
    
     AD9528_PLL2_R1_DIVIDER read data is 1
    
     AD9528_PLL2_N2_DIVIDER read data is 9
    
     AD9528_PLL2_LOOP_FILTER_CTRL read data is 3a
    
      AD9528_CHANNEL_OUTPUT(0) read data is 9f0000
    
      AD9528_CHANNEL_OUTPUT(1) read data is 40000
    
      AD9528_CHANNEL_OUTPUT(3) read data is 9f0000
    
      AD9528_CHANNEL_OUTPUT(12) read data is 8000
    
      AD9528_CHANNEL_OUTPUT(13) read data is 40000
    
     AD9528_CHANNEL_PD_EN read data is ff4
    
     AD9528_CHANNEL_SYNC_IGNORE read data is 0
    
     AD9528_SYSREF_K_DIVIDER read data is 200
    
     AD9528_SYSREF_CTRL read data is 9060
    
     AD9528_PD_EN read data is 10
    
     AD9528_PLL2_VCO_CTRL read data is 1
    
     AD9528_SYSREF_CTRL read data is 9160
    
     AD9528_STAT_MON0 read data is 1
    
     AD9528_STAT_MON1 read data is 7
    
     AD9528_STAT_PIN_EN read data is c
    
     AD9528_READBACK read data is 1
    
     AD9528_CHANNEL_SYNC read data is 0
    
     AD9528 VCXO ok
    PLL2 locked
    AD9528_READBACK read data is e7
    
     adrv9025_init
    adrv9025_setup running
    no_os_gpio_direction_output done
    <adi_common_hal: 34> adi_hal_HwOpen halError: 0
    no_os_gpio_direction_output done
    adi_common_hal_Wait_ms recoveryAction: 0
    no_os_gpio_direction_output done
     VENDOR_ID_0 read value is 56
     VENDOR_ID_1 read value is 4
    adi_adrv9025_UtilityInitFileLoad done
    adrv9025-phy Rev 0, API version: 6.4.0.14 found
    no_os_gpio_direction_output done
    adi_common_hal_Wait_ms recoveryAction: 0
    no_os_gpio_direction_output done
     VENDOR_ID_0 read value is 56
     VENDOR_ID_1 read value is 4
    2 
    jesd204_topology_init done 
     jesd204_fsm_start running  device_number=1 num_links=2 links_number_device0=2links_number_device1=0 
    adrv9025_jesd204_link_init:368 link_num 0 reason initialization
    DEFRAMER parameters:jesd204M =8 serializerLanesEnabled=4 jesd204F=4 scrambling=1  jesd_version =1
     adrv9025_jesd204_link_init:368 link_num 2 reason initialization
    FRAMER parameters:jesd204M =8 serializerLanesEnabled=4 jesd204F=4 scrambling=1  jesd_version =1
     ad9528_jesd204_link_supported:584 link_num 0 reason initialization
    ad9528_jesd204_link_supported:600 link_num 0 LMFC/LEMC 7680000/7680000 gcd 7680000
    ad9528_jesd204_link_supported:584 link_num 2 reason initialization
    ad9528_jesd204_link_supported:600 link_num 2 LMFC/LEMC 7680000/7680000 gcd 7680000
    ad9528_jesd204_link_pre_setup:659 link_num 0 reason initialization
    ad9528_jesd204_link_pre_setup:659 link_num 2 reason initialization
    adrv9025_jesd204_link_pre_setup:325 reason initialization
    245760000  
    signal_source is AD9528_VCO
    ad9528_jesd204_clks_sync:705 reason initialization
    AD9528_READBACK read data is 1
    
     AD9528_CHANNEL_SYNC read data is 0
    
     AD9528 VCXO ok
    PLL2 locked
    AD9528_READBACK read data is e7
    
     adrv9025_jesd204_link_setup:485 reason initialization
    no_os_gpio_direction_output done
    <adi_common_hal: 34> adi_hal_HwOpen halError: 0
    no_os_gpio_direction_output done
    adi_common_hal_Wait_ms recoveryAction: 0
    no_os_gpio_direction_output done
     VENDOR_ID_0 read value is 56
     VENDOR_ID_1 read value is 4
    running adi_adrv9025_Initialize 
    adrv9025_PadConfigsSet
    adi_adrv9025_ProfilesVerify done
    adrv9025_ClocksSet done
    adi_adrv9025_StreamImageLoad done 
    adi_adrv9025_CpuImageLoad done 
    adi_adrv9025_RxGainTableLoad done 
    adi_adrv9025_TxAttenTableLoad done 
    adi_adrv9025_CpuProfileWrite done 
    adi_adrv9025_CpuStart done 
    adi_adrv9025_PreMcsInit_v2 done 
    PLL status = 0x1
    running adi_adrv9025_PreMcsInit_NonBroadCast
    running adi_adrv9025_CpuStartStatusCheck
    trace 1
    trace 2
    trace 3
    Trace 3...
    ADI_ERROR_RETURN: -4
    ADI_ERROR_RETURN: -4
    ERR: AD9026_TEST_902x/adrv9025.c:31:__adrv9025_dev_err(): adrv9025_jesd204_link_setup, 539: failed with CpuBootStatus_e: 1 - : CPU is stuck in Powerup mode (3)
    ERR: AD9026_TEST_902x/adrv9025.c:578:adrv9025_jesd204_setup_stage1(): adrv9025_jesd204_setup_stage1:578 Unexpected MCS sync status (0x0)ERR: AD9026_TEST_902x/adrv9025.c:31:__adrv9025_dev_err(): adrv9025_jesd204_setup_stage1, 580: failed with  (0)
    running adi_adrv9025_MultichipSyncSet
     ADI_ERROR_RETURN: -2
    ADI_ERROR_RETURN: -2
    ADI_ERROR_RETURN: -2
    ERR: AD9026_TEST_902x/adrv9025.c:31:__adrv9025_dev_err(): adrv9025_jesd204_setup_stage2, 608: failed with Channel Enable/Disable is valid only after ARM and stream processors have been loaded (3)
    adrv9025_jesd204_clks_enable:626 link_num 0 reason initialization
    running adi_adrv9025_DfrmLinkStateSet 
    adrv9025_DeserializerLaneEnable done 
    adrv9025_jesd204_clks_enable:626 link_num 2 reason initialization
    adrv9025_jesd204_link_enable:733 link_num 0 reason initialization
    running adi_adrv9025_DfrmLinkStateSet 
    adrv9025_DeserializerLaneEnable done 
    adrv9025_jesd204_link_enable:733 link_num 2 reason initialization
    adrv9025_jesd204_link_running:792 link_num 0 reason initialization
    dfrmLinkCondition=0 
    WARNING: Link0 deframerStatus 0x0
    ADI_ERROR_RETURN: -2
    ERR: AD9026_TEST_902x/adrv9025.c:31:__adrv9025_dev_err(): adrv9025_jesd204_link_running, 831: failed with Device not in READY state. Error in adi_adrv9025_TrackingCalsEnableSet()
     (3)
    adrv9025_jesd204_link_running:792 link_num 2 reason initialization
    WARNING: Link2 framerStatus 0x0
    adrv9025_jesd204_post_running_stage:846 reason initialization
    ADI_ERROR_RETURN: -2
    ADI_ERROR_RETURN: -2
    ERR: AD9026_TEST_902x/adrv9025.c:31:__adrv9025_dev_err(): adrv9025_jesd204_post_running_stage, 857: failed with Invalid TxChannel (3)
    jesd204_fsm_start done  
    no_os_gpio_direction_output done
    adi_common_hal_Wait_ms recoveryAction: 0
    no_os_gpio_direction_output done
     VENDOR_ID_0 read value is 56
     VENDOR_ID_1 read value is 4
    Bye 
    
    

  • Typically we see this error because of one of below reasons. Mainly clock issue. 

      1. Mismatch between Binaries, API and stream file. Load both ARM binaries generated from the same SW version.
      2. Clock issues.- Device clock needs to match with what is programmed and meet the timing requirements.
      3. SPI issue : Arm loading can fail if API is not correct. Check using ARM check sum.
      4. Check Rbias resistor value is correct. Check R bias voltage . (should be ~ 0.5 V)
      5. Arm check sum adi_adrv9025_ArmChecksumTableGet()
      6. Arm check : https://ez.analog.com/wide-band-rf-transceivers/design-support-adrv9026/f/q-a/120617/adrv9026-adi_adrv9025_premcsinit_nonbroadcast-api-function-error-debug

    1. Mismatch between Binaries, API and stream file. Load both ARM binaries generated from the same SW version.       Reply:We are using no-os code for ADRV9026 , API version: 6.4.0.14.We are using the  GUI version 6.4..0.17 DLL version: 6.4.0.14 to generate all the ARM and stream binaries. Does this will cause any problem?
    2.  Clock issues.- Device clock needs to match with what is programmed and meet the timing requirements       Reply:we have checked clock frequency of 245.76MHz, same frequency we are giving in the program as well. we probed with spectrum analyzer and verified. Timing requirements with respect what we need to verify.?
    3. SPI issue : Arm loading can fail if API is not correct. Check using ARM check sum. Reply:verified this no issue found in SPI we are able to read and write.
    4. Check Rbias resistor value is correct. Check Rbias voltage . (should be ~ 0.5 V) Reply: We are observing 0v before programming, does this have to be 0.5 V after programming?
    5. Arm check sum adi_adrv9025_ArmChecksumTableGet() Reply:adi_adrv9025_CpuChecksumTableGet() is not giving any errors,buildchecksum and calculated checksum is same.
    6. Arm check : https://ez.analog.com/wide-band-rf-transceivers/design-support-adrv9026/f/q-a/120617/adrv9026-adi_adrv9025_premcsinit_nonbroadcast-api-function-error-debug Reply:we verified adi_adrv9025_ArmMemRead and adi_adrv9025_ArmMemRead and its proper.

    Hoping for some help.

  • Reply:We are using no-os code for ADRV9026 , API version: 6.4.0.14.We are using the  GUI version 6.4..0.17 DLL version: 6.4.0.14 to generate all the ARM and stream binaries. Does this will cause any problem?

    Which use case are you using ? We should ensure that there is no mismatch between the binaries . Can you cross check by this using adi_adrv9025_ApiArmStreamVersionCompare(). 

    Timing requirements with respect what we need to verify.?

    Could you please check if the “initdata.c” file has the right DEVCLK configured as a first step? The SYSREF setup and hold time requirements with respect to DEVCLK has to be met as shown in the below timing diagram .

    adi_adrv9025_CpuChecksumTableGet() is not giving any errors,buildchecksum and calculated checksum is same.

    Can you verify the ARM check sum using ArmChecksumTableGet() API , attaching the script for reference .

    #################################################################################
    #GUI Version: 6.4.0.17
    #DLL Version: 6.4.0.14
    #Cmd Server Version: 6.4.0.14
    #FPGA Version: 0xD900000A
    #ARM Version: 6.4.0.6(ADI_ADRV9010_ARMBUILD_RELEASE)
    #StreamVersion: 9.4.0.1
    #################################################################################
    
    #Import Reference to the DLL
    import System
    import clr
    import time
    from System import Array
    clr.AddReferenceToFileAndPath("C:\\Program Files\\Analog Devices\\ADRV9025 Transceiver Evaluation Software_x64_FULL\\adrvtrx_dll.dll")
    from adrv9010_dll import AdiEvaluationSystem
    from adrv9010_dll import Types
    from adrv9010_dll import Ad9528Types
    
    def spiRead(address):
        data = adrv9010.Hal.SpiByteRead(address, 0)
        print "SPI Read Address " + hex(address) + ": " + hex(data[1])
    
    def spiWrite(address, data):
        adrv9010.Hal.SpiByteWrite(address, data)
        print "SPI Write Address " + hex(address) + ": " + hex(data)
    
    #Create an Instance of the Class
    link = AdiEvaluationSystem.Instance	
    connect = False
    
    if (link.IsConnected() == False):
        connect = True
        link.platform.board.Client.Connect("192.168.1.10", 55556) 
        print "Connecting"
    
    if (link.IsConnected()):
        adrv9010 = link.Adrv9010Get(1)
        print "Connected"
        ##### YOUR CODE GOES HERE #####
        i=0
        #checksumValid = 0
        u = Types.adi_adrv9010_ChecksumTable_t() 
    
        #v=Array.CreateInstance(Types.adi_adrv9010_Checksum_t,1)
        z=Types.adi_adrv9010_Checksum_t()
        #u.adcProfilefwCheckSum=z.
        #checksum1 =Array[Types.adi_adrv9010_Checksum_t]()
        a= link.platform.board.Adrv9010Device.Arm.ArmChecksumTableGet(u,1)
    
        #print "FW build checksum",u.fwCheckSums.buildChecksum
        print "FW build checksum ",hex(u.fwCheckSums.buildChecksum)
        print "FW run checksum",hex(u.fwCheckSums.runChecksum)
    
        print "stream 0 build check sum",hex(u.streamsCheckSum[0].buildChecksum)
        print "stream 0 run check sum",hex(u.streamsCheckSum[0].buildChecksum)
    
        print "stream 4 build check sum",hex(u.streamsCheckSum[4].buildChecksum)
        print "stream 4 run check sum",hex(u.streamsCheckSum[4].buildChecksum)
    
        print "Deviceprofiles build checksum",hex(u.deviceProfileCheckSum.buildChecksum)
        print "Deviceprofiles run checksum",hex(u.deviceProfileCheckSum.runChecksum)
    
        print "ADC profiles build checksum",hex(u.adcProfilefwCheckSum.buildChecksum)
        print "ADC profiles run checksum",hex(u.adcProfilefwCheckSum.runChecksum)
    
        print "fwerrorcode",u.fwErrorCode
        print "fwerror",u.fwError
    
    
        #print u.adcProfilefwCheckSum.buildChecksum
        #print u.fwCheckSums.buildChecksum
        #print u.streamsCheckSum[0].buildChecksum
        ''' for i in u:
            print len(v)
      
            v=i;
            print ("buildChecksum = %d","runChecksum= %d",v.buildChecksum,v.runChecksum)
        
        
            print checksum.fwErrorCode
            print checksum.fwError
        #print checksum.buildChecksum
        #print checksum.runChecksum
            print a[1]
        '''
        
    else:
        print "Not Connected"
    
    if (connect):
        link.platform.board.Client.Disconnect()
        print "Disconnected"

  • Hi,

    We are using the usecase :51_nonLinkSharing.

    ArmChecksumTableGet() is already checking inside adi_adrv9025_CpuChecksumTableGet() and no errors.

    Sysref signals we are already generating from AD9528 . But still seeing the same issue.

    Can you provide us the working binaries for No-os Platform for the same usecase or any other usecase to try out?

  • Please find the attached resource files for 51-NLS . We are using the below mentioned versions while generating them.

    4034.51-NLS_ResouceFiles.zip

  • We tested these binaries ,but unfortunately we are getting the same error "cpu stuck in power up mode".Also here we tried to use the adi_adrv9025_ApiArmStreamVersionCompare(), its not able to get the armVersion since Arm state is not CPUDebugLoaded.

    instead it is always is power up mode I guess. Same with stream version. What can be the reason for this?

    Previously when we we were using the binaries generated in demo mode we are unable to see the ARM version in GUI its showing not connected, So we were unable to verify arm version.

    Is this really because of binary mismatch or something else, we are unable to understand.Kindly provide some help.