Xilinx / meta-xilinx-tools

Yocto Project layer enables AMD Xilinx tools related metadata for MicroBlaze, Zynq, ZynqMP and Versal devices.
MIT License
53 stars 51 forks source link

xilinx-bootbin or u-boot-xlnx, bug in Howto or dependencies #8

Closed lamidar closed 5 years ago

lamidar commented 5 years ago

The recent changes in the bootbin building made core-image-minimal or petalinux-image-minimal unbuildable due to dependecy conflict. This also applies to release branch 2018.2. It is suggested to add xilinx-bootbin to IMAGE_INSTALL_append, but this leads to the following error: ERROR: Nothing RPROVIDES 'xilinx-bootbin' (but [...]/poky/meta/recipes-core/images/core-image-minimal.bb RDEPENDS on or otherwise requires it) xilinx-bootbin was skipped: PREFERRED_PROVIDER_virtual/boot-bin set to u-boot-xlnx, not xilinx-bootbin NOTE: Runtime target 'xilinx-bootbin' is unbuildable, removing... Missing or unbuildable dependency chain was: ['xilinx-bootbin'] ERROR: Required build target 'core-image-minimal' has no buildable providers. Missing or unbuildable dependency chain was: ['core-image-minimal', 'xilinx-bootbin']

Maybe adding a PREFERRED_PROVIDER_virtual/boot-bin="xilinx-bootbin" could resolve this issue, but I'm still try building a bootable image.

Which way is the recommended for building a proper boot.bin, this seems explained improperly?

mharth commented 5 years ago

This is what we use and it works https://github.com/Xilinx/meta-petalinux/blob/master/conf/distro/include/petalinux-features.conf#L36 Which is essentially PREFERRED_PROVIDER_virtual/boot-bin = "xilinx-bootbin"

If you want to use entire stack including petalinux distro, use meta-petalinux as well. It will perform the required wiring to build the boot images

I will update the Readme to reflect the above approach

lamidar commented 5 years ago

Thanks for the quick reply on this issue. I was using "poky" as DISTRO.

With the preferred provider set a BOOT-zcu102-zynqmp.bin is created.

However, during build several warning messages occured:

WARNING: xilinx-bootbin-1.0-r0 do_install: Manifest [...]/build/tmp/sstate-control/manifest-x86_64_aarch64-zynqmp-pmu-gcc-cross-microblazeel.populate_sysroot not found? WARNING: xilinx-bootbin-1.0-r0 do_install: Manifest [...]/build/tmp/sstate-control/manifest-x86_64_aarch64-zynqmp-pmu-binutils-cross-microblazeel.populate_sysroot not found? WARNING: xilinx-bootbin-1.0-r0 do_populate_sysroot: Manifest [...]/build/tmp/sstate-control/manifest-x86_64_aarch64-zynqmp-pmu-gcc-cross-microblazeel.populate_sysroot not found? WARNING: xilinx-bootbin-1.0-r0 do_populate_sysroot: Manifest [...]/build/tmp/sstate-control/manifest-x86_64_aarch64-zynqmp-pmu-binutils-cross-microblazeel.populate_sysroot not found? WARNING: xilinx-bootbin-1.0-r0 do_package: Manifest [...]/build/tmp/sstate-control/manifest-x86_64_aarch64-zynqmp-pmu-gcc-cross-microblazeel.populate_sysroot not found? WARNING: xilinx-bootbin-1.0-r0 do_package: Manifest [...]/build/tmp/sstate-control/manifest-x86_64_aarch64-zynqmp-pmu-binutils-cross-microblazeel.populate_sysroot not found? WARNING: xilinx-bootbin-1.0-r0 do_package_write_rpm: Manifest [...]/build/tmp/sstate-control/manifest-x86_64_aarch64-zynqmp-pmu-gcc-cross-microblazeel.populate_sysroot not found? WARNING: xilinx-bootbin-1.0-r0 do_package_write_rpm: Manifest [...]/build/tmp/sstate-control/manifest-x86_64_aarch64-zynqmp-pmu-binutils-cross-microblazeel.populate_sysroot not found? WARNING: xilinx-bootbin-1.0-r0 do_package_qa: Manifest [...]/build/tmp/sstate-control/manifest-x86_64_aarch64-zynqmp-pmu-gcc-cross-microblazeel.populate_sysroot not found? WARNING: xilinx-bootbin-1.0-r0 do_package_qa: Manifest [...]/build/tmp/sstate-control/manifest-x86_64_aarch64-zynqmp-pmu-binutils-cross-microblazeel.populate_sysroot not found?

With DISTRO="petalinux" no preferred provider is required and no WARNINGs are posted. I guess there are some other fine tune things inside the petalinux config. But the issue is resolved.