MPC5644A halts DMA if wait instr is used without SIU_HLT being set

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MPC5644A halts DMA if wait instr is used without SIU_HLT being set

Jump to solution
833 Views
EAlepins
Contributor V

Hi,

 

Using the MPC5644A, when the core issues the "wait" instruction without having previously set SIU_HLT[CPUSTP], we have observed that the core and DMA stops. Indeed, the e200z4 core RM does not seem to say there is a condition for the core enter low-power mode. However, the MPC5644A RM says in the SIU_HLT register description that "In the case of the CPU, stop mode in entered when the corresponding bit in SIU_HLT is set and a WAIT instruction is executed." This tends to say BOTH must be set (wait + CPUSTP) for the core/DMA to do in low-power mode.

 

If that's true (core+DMA goes into low-power mode with only the "wait" instruction), then what's the purpose of the CPUSTP bit...?

 

Side question: is it possible to halt only the core without halting the DMA/XBAR/RAM/PBRIDGE/STM?

 

Thanks.

Labels (1)
0 Kudos
1 Solution
625 Views
davidtosenovjan
NXP TechSupport
NXP TechSupport

SIU_HLT[CPUSTP] disables the whole platform consisting of CPU, cross-bar, peripheral bridge, system RAM, STM, and DMA.

If this bit is cleared, WAIT instruction should cause processor instruction fetching to cease i.e. put the core into waiting mode. Having CPU in waiting mode is just requirement for possible stopping of platform clocks (when CPUSTP=1).

View solution in original post

0 Kudos
4 Replies
625 Views
davidtosenovjan
NXP TechSupport
NXP TechSupport

Quting e200z4 Power Architecture™ Core Reference Manual, Rev. 0, chapter 8.2:

Waiting State

The e200 core enters the waiting state as a result of executing a wait instruction. Following entry into the

waiting state, instruction execution and bus activity is suspended. Most internal clocks are gated off in this

state. The e200 core asserts p_waiting to indicate it is in the waiting state. Prior to entering the waiting

state, all outstanding instructions and bus transactions will be completed. The m_clk input should remain

running while in the waiting state to allow for interrupt sampling, and to allow further transitions into the

Halted or Stopped state if requested and to keep the Time Base operational if it is using m_clk as the clock

source.

In the waiting state, the core is waiting for a valid unmasked pending interrupt request. Once a pending

interrupt request is received, the core will exit the waiting state and begin interrupt processing. The return

program counter value will point to the next instruction after the wait instruction. The interrupt can be an

external input interrupt, various critical interrupts, a debug interrupt (based on ICMP), a non-maskable

interrupt, or a machine check interrupt (p_mcp_b assertion, etc.). Once the interrupt processing begins,

the core will not return to the waiting state until another wait instruction is executed.

The waiting state can be temporarily exited and returned to if a request is made to enter hardware debug

mode (various mechanisms), the halted state, or the stopped state. After exiting one of these states, the

processor will return to the waiting state. While temporarily exited, the p_waiting output will negate, and

will be re-asserted once the CPU returns to the waiting state.

0 Kudos
625 Views
EAlepins
Contributor V

Thanks. We indeed measured ~500mW power reduction while in wait state.

0 Kudos
626 Views
davidtosenovjan
NXP TechSupport
NXP TechSupport

SIU_HLT[CPUSTP] disables the whole platform consisting of CPU, cross-bar, peripheral bridge, system RAM, STM, and DMA.

If this bit is cleared, WAIT instruction should cause processor instruction fetching to cease i.e. put the core into waiting mode. Having CPU in waiting mode is just requirement for possible stopping of platform clocks (when CPUSTP=1).

0 Kudos
625 Views
EAlepins
Contributor V

Hi,

Thanks. We didn't understand that halting only the core was possible. Is only halting the core saves power?

By the way, we solved our problem. We had a SW bug that made us think the DMA was stopped.

Thanks.

0 Kudos