wip220 library not appearing in Vitis 2026.1 standalone BSP for Zynq-7000 – encoding fix applied, hardware verified

PYNQ version & Board name & Tool Version

  • Board: PYNQ‑Z2 (xc7z020clg400-1)
  • Tools: Vivado 2026.1 / Vitis 2026.1
  • PYNQ image: not used – this is a bare‑metal standalone application (no Linux, no PYNQ framework).
  • OS: Standalone (ps7_cortexa9_0).

Full details of the problem
I have a custom Vivado design that enables the PS GEM0 Ethernet peripheral (RGMII MIO 16–27, MDIO MIO 52–53, PHY reset MIO 9, Bank 1 LVCMOS 1.8 V). The hardware exports correctly; the XSA contains the ps7_ethernet_0 cell (verified via hsi::get_cells). In Vitis, I create a platform from this XSA, then a standalone domain. The emacps driver can be manually assigned to ps7_ethernet_0 (both in the GUI and via bsp setdriver).
However, the lwip220 library never appears in the “Supported Libraries” tab of the BSP settings.
Without it, I cannot build an lwIP‑based application (missing lwipopts.h, etc.).

Steps to reproduce

  1. In Vivado, create a block design with Zynq PS. Enable GEM0 (ENET0), set RGMII MIO 16‑27, MDIO 52‑53, PHY reset MIO 9, Bank 1 LVCMOS 1.8 V. Apply board preset for PYNQ‑Z2, then override the above properties.
  2. Generate bitstream, export fixed XSA (write_hw_platform -fixed -include_bit).
  3. In Vitis, create a new platform from the XSA, add a standalone domain on ps7_cortexa9_0.
  4. In the domain’s BSP settings → Drivers tab, manually set ps7_ethernet_0 driver to emacps.
  5. Go to Supported Libraries tab – lwip220 is not listed.

Debug steps already taken

  1. Applied the known Vitis 2026.1 lwip220.yaml encoding fix (UTF‑8‑BOM → plain UTF‑8) – no change.
  2. Deleted platform, cleared workspace cache, recreated platform and domain from scratch.
  3. Tried bsp setlib lwip220 in XSCT – command completes without error, but library still not visible.
  4. Set platform.uses_pr 0 in Vivado before XSA export to avoid mis‑classification as “Datacenter Accelerated” – no effect.
  5. Removed all custom repositories; using only built‑in 2026.1 drivers and libraries.
  6. Verified the XSA contents: ps7_init.c correctly programs GEM clocks, MIOs, and resets (audited with a peer).
  7. Confirmed emacps is assignable and active.
  8. No PL Ethernet IP present; only PS GEM0.

Suspected cause
The lwip220.yaml dependency requires emacps with reg and interrupts. I suspect the System Device Tree (SDT) generated from the XSA might lack the interrupts property for the Ethernet node, causing the library to be silently hidden. I have not yet been able to inspect the generated SDT in Vitis 2026.1 – any guidance on how to do that would be appreciated.

Questions

  • What is the recommended way in Vitis 2026.1 to view the generated System Device Tree for a standalone domain?
  • Are there any other known prerequisites for lwip220 to appear (e.g., a specific timer instance, interrupt controller configuration, platform type flag) beyond the emacps driver assignment?
  • Is there an XSCT command that explains why a library is not available, rather than just listing what is present?

I’d be very grateful for any pointers. This is the last hurdle in a long bring‑up – the hardware is proven correct, the driver can be assigned, but the library refuses to appear.

Thank you!

ok, i got it to function. I had to use a clean platform xsa of a similar part and then it could see the network adapter. Then on my next clean workspace lwi appeared for the z2.