Hello, I am trying to migrate a previous Yocto project/layer I was working with to support the Aldec TySOM-3-ZU7EV development board, but I am having issues upgrading the meta-xilinx-pynq layer from 2.5.1 to 2.7.
Aldec does provide a pre-built image with PYNQ2.7 support, but I would like to integrate the PYNQ workflow (if possible) into a custom Yocto/Petalinux image that uses the bitbake layer(s) I have been working with.
I was able to build a Yocto petalinux-image-minimal with the PYNQ 2.5.1 recipe provided in the meta-xilinx-pynq layer, but when I try to modify the recipes to target the 2.7 release, the Yocto build fails.
Hereâs what I have done so far. I understand this is technically not the proper way to do this with Yocto and should be done with *.bbappendâs which I plan to do when this is completed.
- Modified âlibcma_1.0.bbâ in meta-xilinx-pynq/recipes-support/libcma to update the SRCREV to the proper hash for the 2.7 release.
- Modified âpython-pynq.incâ in meta-xilinx-pynq/recipes-devtool/python/ to update the SRC_URI hashes for the 2.7 release
- Updated â0003-Use-sysroot-for-Displayport-library.patchâ to work with the 2.7 release
- This was done to resolve a Yocto QA issue that complains about libdrm. I do not recall the exact issue.
The build produces the following errors. This has been snipped for brevity as there are quite a bit. Arduino, RPI, logictools and pmod are present in the errors.
python3-pynq-2.7.0-r0 do_package_qa: QA Issue: Architecture did not match (Unknown (189), expected AArch64) on /work/aarch64-xilinx-linux/python3-pynq/2.7.0-r0/packages-split/python3-pynq/usr/lib/python3.7/site-packages/pynq/lib/arduino/bsp_iop_arduino/iop_arduino_mb/lib/xtmrctr_selftest.o
Architecture did not match (Unknown (189), expected AArch64) on /work/aarch64-xilinx-linux/python3-pynq/2.7.0-r0/packages-split/python3-pynq/usr/lib/python3.7/site-packages/pynq/lib/arduino/bsp_iop_arduino/iop_arduino_mb/lib/microblaze_flush_cache_ext.o
Architecture did not match (Unknown (189), expected AArch64) on /work/aarch64-xilinx-linux/python3-pynq/2.7.0-r0/packages-split/python3-pynq/usr/lib/python3.7/site-packages/pynq/lib/arduino/bsp_iop_arduino/iop_arduino_mb/lib/microblaze_flush_dcache.o
Architecture did not match (Unknown (189), expected AArch64) on /work/aarch64-xilinx-linux/python3-pynq/2.7.0-r0/packages-split/python3-pynq/usr/lib/python3.7/site-packages/pynq/lib/arduino/bsp_iop_arduino/iop_arduino_mb/lib/xil_testmem.o
Architecture did not match (Unknown (189), expected AArch64) on /work/aarch64-xilinx-linux/python3-pynq/2.7.0-r0/packages-split/python3-pynq/usr/lib/python3.7/site-packages/pynq/lib/arduino/bsp_iop_arduino/iop_arduino_mb/lib/microblaze_enable_icache.o
Unknown (189) refers to the Microblaze architecture, which I think is correct(?), so I updated the INSANE_SKIP_${PN} variable to add âarchâ to ignore this error which did resolve the errors above, but introduce a new error. Again, quite a lengthy log so it has been trimmed down.
ERROR: petalinux-image-minimal-1.0-r0 do_rootfs: Could not invoke dnf. Command '/tmp/yocto/work/tysom_3_zu7ev-xilinx-linux/petalinux-image-minimal/1.0-r0/recipe-sysroot-native/usr/bin/dnf -v --rpmverbosity=info -y -c /tmp/yocto/work/tysom_3_zu7ev-xilinx-linux/petalinux-image-minimal/1.0-r0/rootfs/etc/dnf/dnf.conf --setopt=reposdir=/tmp/yocto/work/tysom_3_zu7ev-xilinx-linux/petalinux-image-minimal/1.0-r0/rootfs/etc/yum.repos.d --installroot=/tmp/yocto/work/tysom_3_zu7ev-xilinx-linux/petalinux-image-minimal/1.0-r0/rootfs --setopt=logdir=/tmp/yocto/work/tysom_3_zu7ev-xilinx-linux/petalinux-image-minimal/1.0-r0/temp --repofrompath=oe-repo,/tmp/yocto/work/tysom_3_zu7ev-xilinx-linux/petalinux-image-minimal/1.0-r0/oe-rootfs-repo --nogpgcheck install bridge-utils can-utils firmware haveged hellopm kernel-module-hdmi kernel-module-mali kernel-module-vcu kernel-modules mtd-utils openssh-sftp-server packagegroup-core-boot packagegroup-core-ssh-dropbear packagegroup-petalinux-pynq pciutils run-postinsts tcf-agent' returned 1:
DNF version: 4.2.2
cachedir: /tmp/yocto/work/tysom_3_zu7ev-xilinx-linux/petalinux-image-minimal/1.0-r0/rootfs/var/cache/dnf
Added oe-repo repo from /tmp/yocto/work/tysom_3_zu7ev-xilinx-linux/petalinux-image-minimal/1.0-r0/oe-rootfs-repo
repo: using cache for: oe-repo
not found other for:
not found modules for:
not found deltainfo for:
not found updateinfo for:
oe-repo: using metadata from Tue 11 Oct 2022 08:01:53 PM UTC.
Last metadata expiration check: 0:00:01 ago on Tue 11 Oct 2022 08:01:54 PM UTC.
No module defaults found
--> Starting dependency resolution
---> Package base-files.tysom_3_zu7ev 3.0.14-r89 will be installed
---> Package base-files-lic.tysom_3_zu7ev 3.0.14-r89 will be installed
---> Package base-passwd.aarch64 3.5.29-r0 will be installed
---> Package base-passwd-lic.aarch64 3.5.29-r0 will be installed
<<<SNIP>>>
Transaction Summary
================================================================================
Install 484 Packages
Total size: 85 M
Installed size: 362 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Error: Transaction check error:
file /usr/lib/python3.7/site-packages/tests/__pycache__/__init__.cpython-37.pyc conflicts between attempted installs of python3-pynq-2.7.0-r0.aarch64 and python3-json5-0.9.2-r0.aarch64
Any assistance or guidance would be greatly appreciated. I am open to alternative configurations, but would prefer to stick with Yocto or Petalinux if possible. I am not a PYNQ developer myself and work in the embedded firmware/software realm and would like to have a single image that both myself and the hardware engineers can use.
Thanks,
Andrew