Post Go back to editing

ADI LINUX frequency hopping support in adrv9002+ ZCU102

Hi,

Can u please guide us how to test the frequency hopping using ADI-LINUX in adrv9002 + ZCU102 .

  • The frequency hopping APIs have not been exposed yet in the driver. If you need to test them you will need to use No-OS or TES.

    -Travis

  • hi travis,

    we are still waiting for Frequency hopping commads to be exposed in linux driver. Is there a way to test FH using ADI-linux. Please provide the updated information.

  • Hi,

    Yes, frequency hopping is already supported. You need to load a profile with it enabled and then load the tables. The table format must be like:

    <table>

    x1,x2,x3,x4,x5,x6,x7,

    ...

    </table>

     

    Where:

    x1: carrier value

    x2: rx1 intermediate frequency

    x3: rx2 intermediate frequency

    x4: rx1 gain

    x5: tx1 attenuation

    x6: rx2 gain

    x7: tx2 attenuation

    After loading the tables, you can trigger the hop signals with a GPIO or spi. By default spi you can only use SPI (through IIO files).

    There's also a script that might help you checking on how to configure things (and test). I will try to add all of these things to the wiki in the next few days....

    - Nuno Sá

  • hi Nuno,

    since i have adrv9002 revB eval board+zcu102. i used the following sd card image.

    http://swdownloads.analog.com/cse/kuiper/2021-01-21-ADI-Kuiper.img.xz

    Generated the profile and stream binary and hop table.csv from TES V0.15 and copied to lib/firmware

    As the test_adrv9002_fh.sh script ,  is not present i manually copied.

    After loading stream binary and profile,  got bad address error.

    Please let me know, whether i am going in right approach.

    yasin.

    .

  • 0728.EVM_testedprofile_FH_31012022.zipHi nuno,

    I am able to boot the latest ADI-linux kernel on succesfully load the Navassa

    [   13.354756] adrv9002 spi1.0: adrv9002-phy Rev 12.0, Firmware 0.19.4.5,  Stream 0.7.9.0,  API version: 48.42.0 successfully initialized
    [   13.367914] cf_axi_adc 84a00000.axi-adrv9002-rx-lpc: ADI AIM (10.01.b) at 0x84A00000 mapped to 0x000000007d2fe27b, probed ADC ADRV9002 as R
    [   13.382078] cf_axi_tdd 84a0c800.axi-adrv9002-core-tdd1-lpc: Analog Devices CF_AXI_TDD MASTER (1.00.a)
    [   13.391885] cf_axi_tdd 84a0cc00.axi-adrv9002-core-tdd2-lpc: Analog Devices CF_AXI_TDD MASTER (1.00.a)
    [   13.419380] cf_axi_dds 84a0a000.axi-adrv9002-tx-lpc: Analog Devices CF_AXI_DDS_DDS MASTER (9.01.b) at 0x84A0A000 mapped to 0x00000000658472
    [   13.451371] cf_axi_dds 84a0c000.axi-adrv9002-tx2-lpc: Analog Devices CF_AXI_DDS_DDS MASTER (9.01.b) at 0x84A0C000 mapped to 0x00000000974d2
    [   13

    And my kernel image version is

    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 5.10.0-97934-g839d73ce88ed-dirty (rw1@rw1-precision-3630-towerone) (aarch64-xilinx-linux-gcc.real (GCC) 9.2.0, G2
    [    0.000000] Machine model: xlnx,zynqmp
    [   

    We are getting the following error while testing the test_adrv9002_fh.sh script

    [ 4830.201360] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...

    Please find the attached profiles

    root@ADRV:~# ./test_adrv9002_fh.sh ADRV9001_FH_LTE_40M_TableA.csv  -n 5 -p FH.bin FH.json -c loop -d                                          
    [INFO]: strt do_config
    [DEBUG]: Got ngpios=0
    [INFO]: end do_config
    [INFO]: Loading new profile...
    [ 4829.122984] SAMPL CLK: 30720000 tuning: RX1
    [ 4829.127166]   0:1:2:3:4:5:6:7
    [ 4829.130145] 0:o o o o o o o o 
    [ 4829.133215] 1:o o o o o o o o 
    [ 4829.136274] 2:o o o o o o o o 
    [ 4829.139337] 3:# o o o o o o o 
    [ 4829.142398] 4:# o o o o o o o 
    [ 4829.145463] 5:# # o o o o o o 
    [ 4829.148522] 6:o # # o o o o o 
    [ 4829.151587] 7:o o o # o o o o 
    [ 4829.340747] SAMPL CLK: 30720000 tuning: TX1
    [ 4829.344926]   0:1:2:3:4:5:6:7
    [ 4829.347896] 0:o o o o o # o o 
    [ 4829.350958] 1:o o o o o o # o 
    [ 4829.354029] 2:o o o o o o o # 
    [ 4829.357088] 3:o o o o o o o o 
    [ 4829.360145] 4:o o o o o o o o 
    [ 4829.363210] 5:o o o o o o o o 
    [ 4829.366271] 6:o o o o o o o o 
    [ 4829.369337] 7:o o o o o o o o 
    [ 4829.741743] SAMPL CLK: 30720000 tuning: RX2
    [ 4829.745921]   0:1:2:3:4:5:6:7
    [ 4829.748898] 0:o o o o o o o o 
    [ 4829.751955] 1:o o o o o o o o 
    [ 4829.755017] 2:o o o o o o o o 
    [ 4829.758081] 3:o o o o o o o o 
    [ 4829.761147] 4:# o o o o o o o 
    [ 4829.764204] 5:o # o o o o o o 
    [ 4829.767267] 6:# # # o o o o o 
    [ 4829.770328] 7:o # # o o o o o 
    [ 4829.958892] SAMPL CLK: 30720000 tuning: TX2
    [ 4829.963073]   0:1:2:3:4:5:6:7
    [ 4829.966050] 0:o # o o o o o o 
    [ 4829.969115] 1:o o # o o o o o 
    [ 4829.972172] 2:o o o # o o o o 
    [ 4829.975235] 3:o o o o # o o o 
    [ 4829.978297] 4:o o o o o # o o 
    [ 4829.981354] 5:o o o o o o # # 
    [ 4829.984412] 6:o o o o o o o # 
    [ 4829.987473] 7:o o o o o o o o 
    [DEBUG]: Export GPIO: 466
    [DEBUG]: Export GPIO; 450
    [INFO]: iiodev:iio:device1
    [INFO]: Start hopping, tbl_ctl: loop, tbl_sz_a: 4, tbl_sz_b: 0, hop: 1, # rx: false, repetitions: 5
    [INFO]: strt table hop
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4830.194565] adrv9002 spi1.0: [ARM System error]: Reset might be needed...
    [ 4830.201360] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [INFO]: end table hop
    [INFO]: strt table hop
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [INFO]: l, l: 4
    [ 4831.550523] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop1, port: 466
    [ 4831.659618] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4831.761015] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4831.862809] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [ 4831.964188] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4832.065694] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4832.167542] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [ 4832.279791] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4832.381186] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: end table hop
    [INFO]: strt table hop
    [INFO]: l, l: 4
    [INFO]: st[ 4832.483357] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    rt table hop1, port: 466
    [ 4832.584833] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4832.686235] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466[ 4832.788028] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    
    [ 4832.900113] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4833.001594] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4833.103461] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [ 4833.215768] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4833.317176] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4833.419018] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [ 4833.531344] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4833.632742] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: end table hop
    [INFO]: strt table hop
    [INFO]: l, l: 4
    [INFO]: st[ 4833.734935] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    rt table hop1, port: 466
    [ 4833.836384] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4833.937896] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4834.039710] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [ 4834.141170] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4834.242567] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4834.344296] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [ 4834.445822] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4834.547353] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4834.649236] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [ 4834.761567] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4834.862958] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: end table hop
    [INFO]: strt table hop
    [INFO]: l, l: 4
    [INFO]: st[ 4834.965144] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    rt table hop1, port: 466
    [ 4835.066524] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4835.167913] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4835.269774] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [ 4835.371148] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4835.472538] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4835.574376] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [ 4835.686679] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4835.788067] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: l, l: 4
    [INFO]: strt table hop1, port: 466
    [ 4835.889872] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [ 4836.002169] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: strt table hop 2
    [INFO]: strt table hop 3
    [ 4836.103573] adrv9002 spi1.0: [Stream0 error]: Reset might be needed...
    [INFO]: end table hop
    [DEBUG]: Unexporting GPIOS: 466, 450
    root@ADRV:~# 
    CTRL-A Z for help | 115200 8N1 | NOR | Minicom 2.7.1 | VT102 | Offline | ttyUSB0                                                             
    
    

  • hi Is the wiki updated? if so can you please provide me a link for it?

    I have generated the drivers for frequency hopping via TES.

    I dont really know how to use/include them for my frequency hopping application which I'm running on ADI Linux.

    P.S: I am using ADRV9009 eval board + ZCU102.

  • Hi  ,

    No, the wiki is not updated. I plan to do it soon to include all the new things supported in the driver. That said, what are the issues you are facing?

    I have generated the drivers for frequency hopping via TES.

    What do you mean by this? The only thing you need from TES is a profile with FH enabled. All the parameters are then configured via devicetree for linux (need to be documented). But for a first try, you can leave the default parameters and use the FH test script that allows you to test some configurations.

    Also as stated in this thread, note that the hopping table used in linux has a different format than the ones used in TES.

    P.S: I am using ADRV9009 eval board + ZCU102

    ADRV9009?

    One last thing... this thread is already marked with "verified answer". Consider opening a new thread if you continue to face problems.

    - Nuno Sá