Post Go back to editing

ERROR: 4: TALISE_loadArmFromBinary(): ARM unknown error during bootup

Getting this error running the headless example program.  The radioStatus value that was read from the device comes back 0xFF, thus the error at line 442 in talise_arm.c.  No other errors or warnings up to that point.  It does continue on but then throws another error "Talise init calibration error encountered" during the TALISE_checkInitCalComplete() function.  Probably meaningless since it appears that the boot didn't happen.  The binaries used to load the device came from the Analog Devices linux repo on the 2018_R1 branch.

I can provide the talise_config.c file if needed.

    - Brad

  • What hardware platform are you using ?

    Moving this post to Linux Software forum as Linux SW related queries are best answered here. 

  • It is Linux I'm currently using for development but there is no adrv9009 driver in the kernel.  I'm using the headless example program to directly control the ADRV9009 through a generic spidev driver.

  • On this forum we only support the ADRV9009 IIO Linux kernel driver.

    You might want to take a look at the adrv9009 No-OS driver: 

    ADRV9009 support for No-OS/Xilinx has been made available here:

    https://github.com/analogdevicesinc/no-OS/tree/jesd204/projects

    It's currently in the jesd204 branch which will merge soon into master.

    PS: Do you provide a valid ARM binary firmware blob?

    -Michael

  • Yes, that's more or less the code I am using.  Looks like this just landed on github, I got mine as a tarball from an ADRV9009 support page weeks ago.  The firmware was extracted from the Analog Devices linux repo, the 2018_R1 branch.  I've diffed the code against the 2018_R1 driver code and it's virtually identical, at least with respect to the talise subdirectory.  Since our application won't be using Linux to control the ADRV9009, I've been working on getting the no-OS code up and running.  I'm developing on a ZCU102 platform and I'm now going back to the SD card image 2018_R1-2018_06_26.img.xz to try to get to a baseline.  Interestingly this setup throws the following errors (from dmesg):

    [ 3.788351] adrv9009 spi32766.1: adrv9009_probe : enter
    [ 3.827624] adrv9009 spi32766.1: ADIHAL_resetHw at index
    [ 26.288207] adrv9009 spi32766.1: ERROR: 241: TALISE_waitArmCmdStatus() failed due to thrown ARM error. ARM time out
    [ 26.298650] adrv9009 spi32766.1: adrv9009_setup:545 (ret 5)
    [ 26.507432] adrv9009 spi32766.1: ERROR: 257: TALISE_setGpIntMask(): Can not set GP_INT mask while InitCals are running
    [ 26.518077] adrv9009 spi32766.1: ERROR: 178: Device not in radioOff/IDLE state. Error in TALISE_enableTrackingCals()
    [ 26.528551] adrv9009 spi32766.1: adrv9009_setup:707 (ret 5)
    [ 26.535240] adrv9009 spi32766.1: ERROR: 288: TALISE_waitArmCmdStatus() failed due to thrown ARM error. Is device in correct state for calling command?
    [ 26.548633] adrv9009 spi32766.1: ERROR: 262148: Talise ARM Command not accepted in READY state. RunInit not completed
    [ 26.559305] adrv9009 spi32766.1: adrv9009_setup:717 (ret 6)
    [ 26.567539] adrv9009 spi32766.1: adrv9009_probe: adrv9009 Rev 192, Firmware 4.0.4 API version: 3.4.0.0 successfully initialized
    [ 33.969471] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [ 34.003545] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [ 34.075552] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [ 34.104171] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [ 34.137769] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [ 34.178773] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [ 34.341836] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled
    [ 34.394250] adrv9009 spi32766.1: ERROR: 281: gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled

    Wondering if I have a bad board/part.  Going to swap in a different Talise FMC board next.

  • You may check if Vadj is truned on by the ZCU102 system power controller. 

  • That was unexpected.  Swapped boards and got this:

    [ 3.784402] adrv9009 spi32766.1: adrv9009_probe : enter
    [ 3.824870] adrv9009 spi32766.1: ADIHAL_resetHw at index
    [ 11.120216] adrv9009 spi32766.1: adrv9009_probe: adrv9009 Rev 192, Firmware 4.0.4 API version: 3.4.0.0 successfully initialized

    Looks like I was fighting a bad board all along.

    But, still no joy, my headless program throwing these errors (which I've seen before):

    MESSAGE: 0: TALISE_loadStreamFromBinary()
    MESSAGE: 0: TALISE_writeArmMem()
    MESSAGE: 0: TALISE_loadArmFromBinary()
    MESSAGE: 0: TALISE_writeArmMem()
    MESSAGE: 0: TALISE_verifyArmChecksum()
    MESSAGE: 0: TALISE_readArmMem()
    MESSAGE: 0: TALISE_readArmMem()
    ERROR: 97: LoadHex() line checksum is invalid
    MESSAGE: 0: TALISE_verifyArmChecksum()
    MESSAGE: 0: TALISE_readArmMem()
    MESSAGE: 0: TALISE_readArmMem()
    ERROR: 97: LoadHex() line checksum is invalid

    I believe these to be SPI transaction issues which I can track down myself now that I have a working board.

  • ,

    Did you find the cause of ERROR: 97: LoadHex() line checksum is invalid?

    Was it a hardware issue?

  • Anonymous
    0 Anonymous on Apr 17, 2019 12:41 PM in reply to RajatRao

    Having issues logging in to EngineerZone so answering anonymously.  This issue was linux driver related.  I switched to using a custom SPI interface in FPGA fabric and had no further issues.  Eventually switched back to the linux driver and had no further trouble so I'm not sure what was happening.  It appeared that the linux driver would randomly drop a transaction leading to the checksum issue.

  • I am using API for adrv9009/zc706 and I find out if you use a big amount of memory in software, you may receive the following errors.

    ERROR: 97: LoadHex() line checksum is invalid
    error: TALISE_loadArmFromBinary() failed

    Mamad