Registering for an Event - 2020.2 English

Zynq UltraScale+ MPSoC Software Developer Guide (UG1137)

Document ID
UG1137
Release Date
2021-01-05
Version
2020.2 English

All interrupts that come into PMU are exposed to user as Events with specific EVENTIDs defined in xpfw_events.h. Any module can register for an event (usually in CfgHandler) and the module's EventHandler will be called when an event is triggered.

To register for an RTC Event:

Status = XPfw_CoreRegisterEvent(ModPtr,XPFW_EV_RTC_SECONDS);

Example of an EventHandler:

void RtcEventHandler(const XPfw_Module_t *ModPtr, u32 EventId)
{
 xil_printf("MOD%d:EVENTID: %d\r\n", ModPtr->ModId, EventId);
 if(XPFW_EV_RTC_SECONDS == EventId){
 /* Ack the Int in RTC Module */
 Xil_Out32(RTC_RTC_INT_STATUS,1U);
 xil_printf("RTC: %d \r\n", Xil_In32(RTC_CURRENT_TIME));
 }
}