Power down M7 from M4 on i.MXRT1166

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

Power down M7 from M4 on i.MXRT1166

1,118 Views
simon71
Contributor I

Hello,

In our application, the system boots from M7, and then the M7 loads M4 code to RAM and start it like in most SDK's multicores examples.

Once the 2 cores have booted and the initializations is done, we want to be able to power OFF and ON the M7 core from the M4 on demand.

There don't seem to be any way to achieve this from the SDK functions, for instance, the MCMGR_StopCore() function from the multicore middleware is not implemented (it will return kStatus_MCMGR_NotImplemented error).

So what needs to be done so the M4 can power down the M7 at any moment?

Tags (1)
0 Kudos
Reply
4 Replies

1,001 Views
lucas_cao
NXP Employee
NXP Employee

You can use the power mode switch case for a reference. 

After SP11, the DCDC will shut down and the wakeup mix and M7 mix will power down.

0 Kudos
Reply

1,077 Views
simon71
Contributor I

Hi @EdwinHz,

Thanks for your help. I already tried to called SRC_AssertSliceSoftwareReset(SRC, kSRC_M7CoreSlice); from an application running on M4 core, but this has no effect. I also tried to assign M7 Core slice to M4 domain with SRC_SetAssignList() but this doesn't help either. I'm I missing something?

0 Kudos
Reply

1,058 Views
EdwinHz
NXP TechSupport
NXP TechSupport

Hi @simon71,

From the tests I conducted, I can see that the CM4 is resetting the CM7 when calling the SRC_AssertSliceSoftwareReset(SRC, kSRC_M7CoreSlice); function. Why do you say this has no effect on your side?

I opened the hello world multicore example, and added a loop on the CM7 that will print repeatedly after starting the CM4 core.

EdwinHz_0-1688684211677.png

On the CM4, I added the SRC_AssertSliceSoftwareReset(SRC, kSRC_M7CoreSlice); routine and the outcome was a loop where the CM7 starts the CM4, then the CM4 restarts the CM7, and the CM7 starts the CM4 again.

EdwinHz_1-1688684332541.png

This quick example shows that the function I previously mentioned is indeed capable of resetting the CM7 on demand from the CM4. Please try this and let me know if you get different results.

BR,
Edwin.

0 Kudos
Reply

1,089 Views
EdwinHz
NXP TechSupport
NXP TechSupport

Hi @simon71,

You can use the fsl_soc_src driver from the SDK to assert a reset for CM7 with the "SRC_AssertSliceSoftwareReset()" routine. In fact, you can see all of the slices you can reset on "Table 25-2. Slice Reset Control List" from the Reference Manual.

Please let me know if you have further inquiries about this.

BR,
Edwin.

0 Kudos
Reply