![]() |
ipipsu
Vitis Drivers API Documentation
|
This file consists of a self test example which uses the XIpiPsu driver to send an IPI message to self and get a response Each IPI channel can trigger an interrupt to itself and can exchange messages through the message buffer.
This feature is used here to exercise the driver APIs. Example control flow:
MODIFICATION HISTORY:
Ver Who Date Changes
2.2 ms 01/23/17 Modified 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.
2.14 ht 05/30/23 Added support for system device-tree flow.
Functions | |
void | IpiIntrHandler (void *XIpiPsuPtr) |
Interrupt Handler : -Polls for each of the valid sources -Checks if there is a message -Reads the message -Inverts the bits -Sends back the inverted message as response. More... | |
int | main () |
void IpiIntrHandler | ( | void * | XIpiPsuPtr | ) |
Interrupt Handler : -Polls for each of the valid sources -Checks if there is a message -Reads the message -Inverts the bits -Sends back the inverted message as response.
< Holds the IPI status register value
< Holds the received Message, later inverted and sent back as response
References XIpiPsu::Config, XIpiPsu_Target::Mask, XIpiPsu_Config::TargetCount, XIpiPsu_Config::TargetList, XIPIPSU_BUF_TYPE_MSG, XIPIPSU_BUF_TYPE_RESP, XIpiPsu_ClearInterruptStatus, XIpiPsu_GetInterruptStatus, XIpiPsu_ReadMessage(), and XIpiPsu_WriteMessage().
int main | ( | ) |
Do Nothing We need to loop on to receive IPIs and respond to them
References XIpiPsu_Config::BaseAddress, XIpiPsu::Config, XIpiPsu_Config::IntId, XIPIPSU_ALL_MASK, XIpiPsu_CfgInitialize(), XIpiPsu_ClearInterruptStatus, XIpiPsu_InterruptEnable, and XIpiPsu_LookupConfig().