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
- 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.
- Generate bitstream, export fixed XSA (
write_hw_platform -fixed -include_bit). - In Vitis, create a new platform from the XSA, add a standalone domain on
ps7_cortexa9_0. - In the domain’s BSP settings → Drivers tab, manually set
ps7_ethernet_0driver toemacps. - Go to Supported Libraries tab –
lwip220is not listed.
Debug steps already taken
- Applied the known Vitis 2026.1
lwip220.yamlencoding fix (UTF‑8‑BOM → plain UTF‑8) – no change. - Deleted platform, cleared workspace cache, recreated platform and domain from scratch.
- Tried
bsp setlib lwip220in XSCT – command completes without error, but library still not visible. - Set
platform.uses_pr 0in Vivado before XSA export to avoid mis‑classification as “Datacenter Accelerated” – no effect. - Removed all custom repositories; using only built‑in 2026.1 drivers and libraries.
- Verified the XSA contents:
ps7_init.ccorrectly programs GEM clocks, MIOs, and resets (audited with a peer). - Confirmed
emacpsis assignable and active. - 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
lwip220to appear (e.g., a specific timer instance, interrupt controller configuration, platform type flag) beyond theemacpsdriver 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!