ipipsu: Main Page

| ipipsu Xilinx SDK Drivers API Documentation

- Overview
- Data Structures
- APIs
- File List
- Examples

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:

- Write the Message into Message Buffer using XIpiPsu_WriteMessage()
- Trigger IPI using XIpiPsu_TriggerIpi()
- Wait for Ack using XIpiPsu_PollForAck()
- Read response using XIpiPsu_ReadMessage()

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:

- Register an interrupt handler for the IPIs interrupt ID
- Enable the required sources using XIpiPsu_InterruptEnable()
- In the interrupt handler, Check for source using XIpiPsu_GetInterruptStatus
- Read the message form source using XIpiPsu_ReadMessage()
- Write the response using XIpiPsu_WriteMessage()
- Ack the IPI using XIpiPsu_ClearInterruptStatus()

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.