We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome,
Firefox,
Internet Explorer 11,
Safari. Thank you!

My setup: Using a ZCU102 Zynqmp Ultrascale+ MPSoC (ZU9) as the root complex in my PCIe setup, I have mezzanine card connected to the PCIe slot acting as a PCIe End Point. I would like to connect to it from a program running on the R5 (or A53) running the Standalone (Bare Metal) kernel. I am using the Programmable Subsystem (PS) PCIe interface, not the AXI connected Programmable Logic (PL) PCIe connection. We are using a x1 lane and Gen 1 PCIe. I am using the Xilinx 2016.3 release.

My questions:

Is there a Standalone PS driver for the PCIe? I see the PL one (Xilinx AXI PCIe IP (XAxiPcie)), but I do not see an equivalent one for the "ps".

Also, I am looking for some sample code that sets up the PCIe device and writes and reads from PCIe mapped registers or memory.

Lastly, is there any thing like a showPCI command that prints information about all discovered devices on the PCIe bus?

But a path does exist to DMA from PS PCIe to PL, we recommend that customers move data to the PS DDR first. Going through the CCI and Core Switch can have latency causing system timeout. It really depends on how much data is in those paths and if a timeout will happen.

Thanks, but that does not help with my problem. I am trying to use the PS-side PCIe from a bare metal application running on the R5 to talk to a device in the PCIe slot that is acting as an end point. I am looking to see if anyone has setup a PCIe device from a bare metal application and then used that setup to access registers/memory on the end point device.

I am in the same boat as baeton in looking for a PS solution to controlling the PCIe in a standalone application (since Linux is causing timing issues for my design). It seems the available PCIe drivers (XAxiPcie) were designed for the Kintex and Virtex boards. I've been looking into a PS to PL workaround from a different thread that seems to follow sethus' advice and adapting it to the zcu102.

@braetontaylor You could basically rip off the Linux driver and make it a standalone driver. Kernel protected programming is not that much different of standalone programming. That is what I did with the SI570 programmable oscillator for the tengig component.

But no, I have not done that before - just throwing some options here.

vitorian.com --- We do this for fun. Always give kudos. Accept as solution if your question was answered.I will not answer to personal messages - use the forums instead.