03-03-2017 05:43 AM
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.
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?
03-16-2017 03:52 AM
I am not sure about the driver details
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.
I’ve included a diagram with the paths highlighted.
03-20-2017 07:58 AM
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.
03-28-2017 05:52 AM
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.
07-06-2017 09:10 PM
@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.
01-17-2018 10:24 PM
I am looking for the same solution.
Have you completed the bare Metal PS side driver for PCIe. I want to transfer data from fabric to PCIe through DMA.