axipcie
Vitis Drivers API Documentation
xaxipcie_rc_enumerate_example.c File Reference

Overview

This file contains a design example for using AXI PCIe IP and its driver.

This is an example to show the usage of driver APIs when AXI PCIe IP is configured as a Root Port. The AXI PCIe can be configured as a Root Port only on the 7 Series Xilinx FPGA families.

The example initialises the AXI PCIe IP and shows how to enumerate the PCIe system.

Note

This example should be used only when AXI PCIe IP is configured as root complex.

This code will illustrate how the XAxiPcie IP and its standalone driver can be used to:

  • Initialize a AXI PCIe IP core built as a root complex
  • Enumerate PCIe end points in the system

Please note that this example enumerates and initializes PCIe end points only. It does not shows how to deal with PCIe switches (and its virtual P2P bridges)

We tried to use as much of the driver's API calls as possible to show the reader how each call could be used and that probably made the example not the shortest way of doing the tasks shown as they could be done.

  MODIFICATION HISTORY:
  Ver   Who  Date     Changes


2.00a nm 10/19/11 Initial version of AXI PCIe root complex example 2.02a nm 08/19/12 Removed the calls to XAxiPcie_GetLocalBusBar2PcieBar and XAxiPcie_SetLocalBusBar2PcieBar as they are not needed for enumeration 3.1 ms 01/23/17 Added xil_printf statement in main function to ensure that "Successfully ran" and "Failed" strings are available in all examples. This is a fix for CR-965028. ms 04/05/17 Added tabspace for return statements in functions for proper documentation while generating doxygen.

*

Functions

int PcieInitRootComplex (XAxiPcie *AxiPciePtr, u16 DeviceId)
 This function initializes a AXI PCIe IP built as a root complex. More...
 
void PCIeEnumerateFabric (XAxiPcie *AxiPciePtr)
 This function enumerates its PCIe system and figures out the nature of each component there like end points,bridges,... More...
 
int main (void)
 This function is the entry point for PCIe Root Complex Enumeration Example. More...
 

Function Documentation

int main ( void  )

This function is the entry point for PCIe Root Complex Enumeration Example.

Parameters
None
Returns
  • XST_SUCCESS if successful
  • XST_FAILURE if unsuccessful.
Note
None.

References PCIeEnumerateFabric(), and PcieInitRootComplex().

void PCIeEnumerateFabric ( XAxiPcie AxiPciePtr)

This function enumerates its PCIe system and figures out the nature of each component there like end points,bridges,...

Parameters
AxiPciePtris a pointer to an instance of XAxiPcie data structure represents a root complex IP.
Returns
None.
Note
None.
int PcieInitRootComplex ( XAxiPcie AxiPciePtr,
u16  DeviceId 
)

This function initializes a AXI PCIe IP built as a root complex.

Parameters
AxiPciePtris a pointer to an instance of XAxiPcie data structure represents a root complex IP.
DeviceIdis AXI PCIe IP unique ID
Returns
  • XST_SUCCESS if successful.
  • XST_FAILURE if unsuccessful.
Note
None.