adrv9001-sdk hardware addresses

I am able to successfully build the adrv9001-sdk.

However, I have a custom platform and I do not see where the SDK gets its addressing for the IP.

The notes state that the zc706 platform is used, but I do not see any addressing for this platform.

There is no hardware importing for this sdk and no xparameters.h.

So how do I map the IP to the custom hardware addressing.

Is there an example of this?

Modifying the HAL in some way?


  • 0
    •  Analog Employees 
    on Apr 1, 2021 5:13 PM

    Moving to SDK support.


  • After going through a bit of the code, I think I am getting some understanding.
    However, I have a few questions.

    1) It appears that the makefile in the test1 folder defines the platform in CFLAGS using -DADRV9001_ZC706_OFFSET.
        This is used in ADRV9001_ZC706.
        A) The first questions are: why is the OFFSET being used and not the BASE?
             I could not find a base address in the code, so how does the absolute address get calculated?

        B) I am assuming that for a new platform such as the ZCU106, I have to create an adrv9001_zcu106.h file and define the addresses for all of the IP?
             Then find all of the files that include the adrv9001_zc706.h and add the adrv_zcu106.h include to these file?
             Then modify the makefile and change CFLAGS to use -DADRV9001_ZCU106_OFFSET ? Again not sure if I need to use the BASE or the OFFSET?

    2) I see in adi_platform.c that there is #ifndef CUSTOMER_PLATFORM. 
        So I am assuming that I need to define this in the CFLAGS of the makefile?
        Then update the *hal_customer* files as needed?

    Thanks for the help

  • 0
    •  Analog Employees 
    on Apr 6, 2021 10:23 AM

    Hi Dan,

    I've moved this question here, as it is the more appropriate place for it.

    To begin answering your questions and some of your follow-up questions, I'll start by saying that we do not provide a way for you to program a custom setup dynamically the same way you do with the TES on the ZC706 or ZCU702. Our own SW uses a proprietary Client-Server platform which we develop, and as such we do not support customers modifying the Client or Server code to suit their own bespoke platform, meaning that TES will never connect to your platform.

    As for the SDK, the IP address of your bespoke platform, whatever platform it is, doesn't matter for programming the part. The IP address only matters for the script that we provide. This script will push your SDK with your bespoke platform code to your platform at the IP address you provide at runtime. To see a guide for using this script, view this guide:

    Focusing now on your follow up questions:

    1. As I stated, the IP address of your platform does not matter for program execution, so there is no need for writing the IP addresses into any part of the HAL.
    2. You are in part correct. The best way to begin development of your own platform HAL is as follows:
    • Navigate to the adrv9001-sdk\pkg\production\c_src\platforms\customer\ folder.
    • Into each file that pertains to devices that you intend to use, write your custom code.
    • Navigate to the adi_platform.c file you mentioned in your question. At the beginning of the file type: "#define CUSTOMER_PLATFORM". Now all of your bespoke code will be used, rather than our default platform code.
    • For the makefile, this will only need editing if you have included libraries that we do not natively support. If you have included external libraries, simply link them in the makefile using the -llibrary_name functionality.

    That should get you most of the way, we've not had a customer needing to modify CFLAGS or deal with the BASE or OFFSET addresses while using this methodology.

    I do hope this helps!

    Best Regards,

  • Hello Oisín,

    Thank you for the reply, however that does not answer my question.

    I am not referring to the IP address.

    I have no problem starting with the SDK and using the TES files in the test1 folder and then running compile on platform.
    This all works fine.

    My problem is with defining another platform and understanding the AXI addresses that are defined in the files: adrv9001_zc706.h and add the adrv_zcu106.h.

    There are two ifdefs options in these files. BASE and OFFSET.

    If OFFSET is used, how does the code know the BASE address to use?

    Thanks for the help

  • 0
    •  Analog Employees 
    on Apr 6, 2021 2:39 PM in reply to swie

    Hello Dan,

    Apologies for the confusion! I'll take your question to the SW engineers and get back to you once they reply.

    I also noticed that you have another question on the Design Support forum posted at this link:

    This questions seems to hit a lot of the same key points as that one does. Would you have any issues with this question being removed? If there are elements of that question not addressed here thus far you can add them as a comment.

    Thanks again! I'll be back when I hear more answers from the SW team.

    Best Regards,