cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
fabb
Visitor
Visitor
384 Views
Registered: ‎12-23-2020

[Zynqmp] Reset problem

Hi,
I'm trying to get the reset functionality work on a Zynqmp Ultra96+ rev2 board.

The goal is to have (part of) the board reset on a watchdog timeout.
I'm able to trigger a watchdog reset on both APU and RPU, but the board inevitably ends up in a perpetual reset state:

 

xsdb% targets
  1  PS TAP
     2  PMU
     3  PL
  5* PSU
     6  RPU (Reset)
        7  Cortex-R5 #0 (RPU Reset)
        8  Cortex-R5 #1 (RPU Reset)
     9  APU (L2 Cache Reset)
       10  Cortex-A53 #0 (APU Reset)
       11  Cortex-A53 #1 (APU Reset)
       12  Cortex-A53 #2 (APU Reset)
       13  Cortex-A53 #3 (APU Reset)

 

The PMU did its job resetting everything, but doesn't bring the system back to life.

Some facts:

  • Booting from SD card or from JTAG produces the same behavior.

  • When doing a system reset, PMU goes all the way in XPfw_ResetSystem until writing in CRL_APB_RESET_CTRL, but never seems to complete this last step.
    A PS-only reset seems to hang before (just after PmResetSlaveStates).

  • When done before Linux runs, a 'rst -system' puts me in this state:

 

xsdb% targets
  1  PS TAP
     2  PMU
     3  PL
  5* PSU
     6  RPU (Reset)
        7  Cortex-R5 #0 (RPU Reset)
        8  Cortex-R5 #1 (RPU Reset)
     9  APU
       10  Cortex-A53 #0 (Reset Catch, EL3(S)/A64)
       11  Cortex-A53 #1 (Reset)
       12  Cortex-A53 #2 (Reset)
       13  Cortex-A53 #3 (Reset)

 

and I can get out of reset with a 'con' (FSBL will run again fine).

  • If I do a subsystem reset from Linux with 'echo "PM_SYSTEM_SHUTDOWN 1 0" > /sys/kernel/debug/zynqmp-firmware/pm', then the FSBL runs again, but fails to initialize the SD card it booted from (fails in XSdPs_CardIfCond sending CMD8 and getting no response).

  • PMU is compiled with EM, RECOVERY, ESCALATION, IDLE_PERIPHERALS, NODE_IDLING, and ATF is compiled with WARM_RESTART and located in OCM. FSBL runs first, from A53#0, and also in OCM.
    I've defined the 4 isolated subsystems in Vivado, and I'm using the 2020.2 version.

Any help is greatly welcome, as the reset is a must-have for us.

0 Kudos
0 Replies