PMU Operation After a Wake-up

Zynq UltraScale+ Device Technical Reference Manual (UG1085)

Document ID
Release Date
2.3 English

After receiving a wake-up trigger, the PMU can follow these three wake-up flows.

Fixed: Direct wake of a processor, will always cause the target processor to be powered up. For example, when the dual Cortex-R5F MPCores are powered down and any of the two receives an interrupt from a peripheral or a timer, the interrupt does the following.

Route to the PMU to trigger the power up of the dual Cortex-R5F MPCores.

Release its reset to prepare for processing of the pending interrupt.

Similarly, if an APU core is powered down while the FP domain is up, the interrupts for the APU core that was shutdown can trigger its power up followed by the release of its reset.

On-demand: Prior to requesting a power-down and entering the sleep mode, the user program can queue up the list that needs to be powered up after the wake in the PMU. The following procedure should achieve this.

1.Your program requests to power up the desired domains and islands using the REQ_PWRUP_TRIG register while masking the interrupt for those requests in the REQ_PWRUP_INT_DIS register. Even though the requests are recorded, the PMU does not actually execute them until after the wake-up.

2.Your program follows up with the normal request for power down. Because the interrupt for the power-ups were masked, the power-down routine ignores those requests and proceeds with powering down the blocks.

3.When the PMU receives a wake-up request, it checks the REQ_PWRUP_STATUS register for pending power-up requests with the interrupt being masked and proceeds with powering up those islands.

4.Similarly, if reset to any block needs to be released after the power up, your code queues up the requests to release those resets in the REQ_SWRST_TRIG register while masking their interrupts.

5.After the wake-up and its consequent power-up, the PMU releases the reset to the desired blocks.

Wake-up Code Programming: The wake up routine can be programmed into the PMU RAM and when a wake interrupt occurs the PMU executes your code which powers up all the blocks that are necessary after the wake-up.