Post Go back to editing

meta-adi master branch fails to build on Petalinux 2021.2

Category: Software
Software Version: 2021r2

Hi,

due to an issue with the HDL Coder targeting workflow for ZCU102+ADRV9002 I am using the main branch for the TransceiverToolbox.

Using the TRx main branch together with old Petalinux (2019R1) caused driver compatibility issues that prevented loading any profiles onto the ADRV9002 chip. Moving to 2021R1 didn't really fix the issue: the drivers could not initialize the ADRV9002 AXI IP correctly, failing with error message:

cf_axi_adc: probe of 84a00000.axi-adrv9002-rx-lpc failed with error -5

I then tried to build off of the meta-adi main branch using Petalinux 2021.2. This fails with the following message:

ERROR: Required build target 'petalinux-image-minimal' has no buildable providers.
Missing or unbuildable dependency chain was: ['petalinux-image-minimal', 'libiio-python3']

Any ideas?

Thanks
--
Mariano Maté

Parents
  • Hi,

    cf_axi_adc: probe of 84a00000.axi-adrv9002-rx-lpc failed with error -5

    This means that the SSI calibration is failing. Likely because of some hdl issue...

    Moving to 2021R1 didn't really fix the issue: the drivers could not initialize the ADRV9002 AXI IP correctly, failing with error message:

    Which HDL branch are you using?

    ERROR: Required build target 'petalinux-image-minimal' has no buildable providers.
    Missing or unbuildable dependency chain was: ['petalinux-image-minimal', 'libiio-python3']

    Are you sure you have all the dependencies to build petalinux installed? Can you elaborate more on the steps you are doing to build the project?

    - Nuno Sá

  • Thanks Nuno.

    I'll retry with hdl_2021r1 and Petalinux 2021R1.

    The steps to build the Petalinux project:

    - Checkout the main meta-adi and hdl branches
    - Make the zcu102+adrv9002 hdl project.
    - Create a docker image with the Dockerfile.petalinux Dockerfile present in meta-adi. 
    - Create a container based on that image, mounting two volumes: one for project data, another one containing Petalinux 2021.2
    - Run bash on the container.
    - Call the Petalinux settings.sh script
    - petalinux-create and petalinux-config to create a zynqmp project based on the xsa file from the zcu102+adrv9002 hdl project.
    - In petalinux-config add the meta-adi layers
    - petalinux-build

    I will also go again through these steps to make sure I did not miss any step.

  • Re-did all the steps as described in my previous comment for main branch/2021.2 and got the same error messages.

    ERROR: Nothing RPROVIDES 'libiio-python3' (but /home/petalinux/work/RMI/petalinux_builds/2021r2/adi_zcu102/components/yocto/layers/meta-petalinux/recipes-core/images/petalinux-image-minimal.bb RDEPENDS on or otherwise requires it)

    NOTE: Runtime target 'libiio-python3' is unbuildable, removing...
    Missing or unbuildable dependency chain was: ['libiio-python3']
    NOTE: Runtime target 'kernel-modules' is unbuildable, removing...
    Missing or unbuildable dependency chain was: ['kernel-modules', 'petalinux-image-minimal', 'libiio-python3']

    ERROR: Required build target 'petalinux-image-minimal' has no buildable providers.
    Missing or unbuildable dependency chain was: ['petalinux-image-minimal', 'libiio-python3']

  • Hi,

    Hmm, can you share how are you running docker? To me, it seems that you are not bind mounting everything you need in the container.. Typically I just share my whole $HOME (I have everything I need under my $HOME) and run the container...

    Can you tell me the paths where you cloned meta-adi and where you installed petalinux?

    Also, before running 'petalinux-build', you need to specify your devicetree in your conf file...

    - Nuno Sá

  • Hi Nuno,

    It is weird because the same container with the same bind mounts works for 2021R1 (Petalinux 2021.1) but not for 2021R2 (Petalinux 2021.2)

    My setup is similar to yours it seems: I bind mount $HOME/work where I have all my work projects and /opt where I have all Xilinx tools installed:

            "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/home/mmate/work",
                    "Destination": "/home/petalinux/work",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                },
                {
                    "Type": "bind",
                    "Source": "/opt",
                    "Destination": "/opt",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                }
            ],

    Petalinux is installed under /opt/Xilinx/Petalinux.

    meta-adi is cloned in ~/work/<project_folder>/petalinux_builds/2021r2/meta_adi

    The petalinux project is in ~/work/<project_folder>/petalinux_builds/2021r2/adi_zcu102

    KERNEL_DTB is set in the conf file as per the instructions.

Reply
  • Hi Nuno,

    It is weird because the same container with the same bind mounts works for 2021R1 (Petalinux 2021.1) but not for 2021R2 (Petalinux 2021.2)

    My setup is similar to yours it seems: I bind mount $HOME/work where I have all my work projects and /opt where I have all Xilinx tools installed:

            "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/home/mmate/work",
                    "Destination": "/home/petalinux/work",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                },
                {
                    "Type": "bind",
                    "Source": "/opt",
                    "Destination": "/opt",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                }
            ],

    Petalinux is installed under /opt/Xilinx/Petalinux.

    meta-adi is cloned in ~/work/<project_folder>/petalinux_builds/2021r2/meta_adi

    The petalinux project is in ~/work/<project_folder>/petalinux_builds/2021r2/adi_zcu102

    KERNEL_DTB is set in the conf file as per the instructions.

Children
  • Hmm this is indeed weird as there are no significant differences between 2021_R1 and 2021_R2. Even the libiio recipe append is pretty much the same.

    Can it be an issue with filesystem permissions? I don't really think it is but...

    The error states that no one provides (builds) libiio-python3 which is odd as it should be defined in here:

    https://github.com/openembedded/meta-openembedded/blob/gatesgarth/meta-oe/recipes-support/libiio/libiio_git.bb#L36

    The only way I see this failing is if ${PYTHON_PN} is somehow not "python3" but then this should also fail for 2021_R1 and for all my CI jobs (which are using the petalinux docker image). Can you add this:

    python __anonymous() {
        bb.note("python: %s" % d.getVar('PYTHON_PN'))
    }

    to

    https://github.com/analogdevicesinc/meta-adi/blob/master/meta-adi-xilinx/recipes-support/libiio/libiio_%25.bbappend

    Note that I did not tested this so I'm not sure if it will spit out anything (or even not throwing an error).

    Alternatively, you can remove this line. But note that you won't have libiio python bindings this way and ideally you should find out what is going on with your env as something seems be very wrong.

    - Nuno Sá

  • Thanks for the feedback. It was on me all along...

    There was something that I had "ignored" up until now. If I use the latest meta-adi commit I get the following error after adding meta-adi-xilinx to the project:

    ERROR: Failed to config project.

    If I look into build/config.log I see the following

    ERROR: Layer meta-user is not compatible with the core layer which only supports these series: zeus (layer is compatible with gatesgarth)

    I had "ignored" this error because I somehow assumed that zeus would be newer than gatesgarth but now after you pointed me to the gatesgarth repository I see that it isn't.

    I installed 2020.2 instead of 2021.2.

    My apologies.