Interacting with Other Processing Units - 2020.2 English

Zynq UltraScale+ MPSoC Software Developer Guide (UG1137)

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

Suspending a PU

A PU can request that another PU be suspended by calling XPm_RequestSuspend, and passing the targeted node name as an argument.

This causes the power management controller to call XPm_InitSuspendCb(), which is a callback function implemented in the target PU. The target PU then initiates its own suspend procedure, or call XPm_AbortSuspend and specify the abort reason. For example, you can request an APU to suspend with the following command:

XPm_RequestSuspend(NODE_APU, REQUEST_ACK_NON_BLOCKING, MAX_LATENCY, 0);

The following diagram shows the general sequence triggered by a call to the XPM_RequestSuspend.

For more information about XPm_RequestSuspend, XPm_InitSuspendCb, and XPm_AbortSuspend, see XilPM Library in the OS and Libraries Document Collection (UG643).

Figure 1. APU initiating suspend for the RPU by calling XPm_RequestSuspend

Waking a PU

Additionally, a PU can request the wake-up of one of its CPUs or of another PU by calling XPm_RequestWakeup.

  • When processing the call, the power management controller causes a target CPU or PU to be awakened.
  • If a PU is the target, only one of its CPUs is woken-up by this request.
  • The CPU chosen by the power management controller is considered the primary CPU within the PU.

The following is an example of a wake-up request:

XPm_RequestWakeup(NODE_APU_1, REQUEST_ACK_NO);

For more information about XPm_RequestWakeup, see XilPM Library in the OS and Libraries Document Collection (UG643).