In my previous post Avnet UltraZed-EV Starter Kit Road Test - Port PYNQv2.5 , I had ported PYNQv2.5 to the UltraZed-EV using the PetaLinux BSP (uz7ev_evcc_2019_1.bsp) which is for the OOB design.  This verifies the porting process works but now I need to integrate the VCU which is not in the OOB design.

 

The hardware design bitfile is is loaded as an overlay in PYNQ but any drivers and software need to be installed separately.  Since PYNQ uses an Ubuntu rootfs and I am using a pre-built image, I am going to add the gstreamer packages manually in Ubuntu.  The VCU product guide PG252 includes PetaLinux recipes for configuring the hardware and installing drivers and software.  The hardware recipes are specific to the ZCU106 and ZCU104 and relate to using the PL DDR memory to achieve maximum performance.  I don't need that initially but I'll need to implement that later.   There are recipes for adding vcu driver patches and recipes for gstreamer packages that aren't needed.  So how to install the VCU driver?  It seems that if I built a BSP from the VCU TRD HDF that would associate the VCU driver.

 

Process to port PYNQ to VCU TRD

  • Verify that an overlay can be generated from the Vivado design (completed)
    • Upgrade the 2018.3 VCU TRD design to 2019.1 (since this is a small design there aren't many components so upgrading was not a problem)
    • Build design and export with bitstream
    • Generate overlay with .hwh and .bit files
    • Verify that PYNQ can load and operate GPIO (the VCU TRD uses the same LED, push button and dip switches as the OOB design)
  • Generate a new BSP from the updated VCU TRD HDF (completed)
    • PetaLinux build and package BSP from HDF
  • Port new PYNQ image using new BSP (completed)
    • Verify Driver is included in device-tree.mss
  • Test new PYNQ image (failed) - I've worked through multiple issues and still can't get it to work
    • First boot failed - can't initialise the SD card
    • After searching Xilinx forums I discovered that I needed edits to the device-tree system-user.dtsi file so I copied one from the earlier PYNQ port - apparently the SD card needs to be configured with the no-1-8-v parameter.  Interesting that an image built using only the BSP will boot even with this failure.
    • After rebuilding the image - it still failed to boot, now it can't open root device
    • More forum searching and it turns out that it also wants a disable-wp parameter.  Why did the previous port work without it?
    • Now it boots and Ethernet is configured and I have an ipaddr but the Jupyter service loaded and failed to start
    • I've seen this before when the root partition was full
    • And it is....., but I customized the image, otherwise Ethernet would not have worked and the package is in the same UZ7EV.spec file as the resizefs package.  This also worked with the OOB port.  Why is resizefs not working?

 

Giving up

I've spent a lot of time trying to get PYNQ to work (building new images is not quick).  In parallel I've been looking Vitis-AI and it looks promising, so I'm going to abandon this effort for now.  I hate to quit and I may come back to it later but these failures are pretty frustrating and seemingly inconsistent.  I think I'm close but it seems it's not converging - this should just work.  I could try a different approach but PYNQ is not the focus of my roadtest - I was just hoping that it would help me prototype faster by being able to use overlays.  Someone will probably have a working process before I get back to it.  And if I use Vitis I'll want to have PYNQ work with 2019.2 tools.

 

Links to previous posts for this roadtest:

  1. Avnet UltraZed-EV Starter Kit Road Test- the adventure begins.....
  2. Avnet UltraZed-EV Starter Kit Road Test - VCU TRD
  3. Avnet UltraZed-EV Starter Kit Road Test - VCU TRD continued
  4. Avnet UltraZed-EV Starter Kit Road Test - Port PYNQv2.5
  5. Avnet UltraZed-EV Starter Kit Road Test - Vitis AI