ipipsu
Xilinx Vitis Drivers API Documentation
ipipsu Documentation

This is the header file for implementation of IPIPSU driver. Inter Processor Interrupt (IPI) is used for communication between different processors on ZynqMP SoC. Each IPI register set has Trigger, Status and Observation registers for communication between processors. Each IPI path has a 32 byte buffer associated with it and these buffers are located in the XPPU RAM. This driver supports the following operations:

  • Trigger IPIs to CPUs on the SoC
  • Write and Read Message buffers
  • Read the status of Observation Register to get status of Triggered IPI
  • Enable/Disable IPIs from selected Masters
  • Read the Status register to get the source of an incoming IPI

Initialization The config data for the driver is loaded and is based on the HW build. The XIpiPsu_Config data structure contains all the data related to the IPI driver instance and also the available Target CPUs.

Sending an IPI The following steps can be followed to send an IPI:

Note
XIpiPsu_GetObsStatus() before sending an IPI to ensure that the previous IPI was serviced by the target

Receiving an IPI To receive an IPI, the following sequence can be followed:

Note
XIpiPsu_Reset can be used at startup to clear the status and disable all sources
 MODIFICATION HISTORY:
 Ver  Who Date     Changes


2.2 ms 01/23/17 Modified xil_printf statement in main function for all examples to ensure that "Successfully ran" and "Failed" strings are available in all examples. This is a fix for CR-965028. kvn 02/17/17 Add support for updating ConfigTable at run time ms 03/17/17 Added readme.txt file in examples folder for doxygen generation. 2.3 ms 04/11/17 Modified tcl file to add suffix U for all macro definitions of ipipsu in xparameters.h ms 03/28/17 Add index.html to provide support for importing examples in SDK. 2.5 sdd 12/17/18 Add the cpp extern macro. 2.6 sdd 04/09/20 Restructure the code for modularity and readability Added file xipipsu_buf.c and xipipsu_buf.h as part of it. 2.7 sdd 09/03/20 Makefile update for parallel execution. 2.8 nsk 12/14/20 Modified the driver tcl to not to use the instance names. 2.8 nsk 01/19/21 Updated the driver tcl to use IP_NAME for IPIs mapped.