cancel
Showing results for 
Search instead for 
Did you mean: 

SMT32MP1 MCU as Power Management Unit

alexey.b
Associate II

Hello.

I want to use MCU (Cortex M4 core) as PMU for MPU (Cortex A7 core).

Is it possible to use it in this way?

For this I need the following:

  1. It's better to start MCU firmware from another source (not SRAM) - from non-volatile memory. Is it possible?
  2. Switch on/off MPU using MCU. For example toggle GPIO or using registers.
  3. Don't stop MCU firmware by MPU reboot.
  4. Move MPU to flashing mode and exit it using MCU.

Is all this possible?

1 ACCEPTED SOLUTION

Accepted Solutions
PatrickF
ST Employee

That globally not possible, Cortex-M4 is mostly a slave coprocessor of Cortex-A7 Linux.

Cold boot is always from Cortex-A7 BootROM.

Nevertheless Cortex-M4 could be kept running while Linux is in low-power mode (e.g. suspend to RAM).

Alternatively, Cortex-M4 could start (alone) from it's RETRAM upon STANDBY exit (i.e. Linux has been started and put the platform in STANDBY mode), then you could implement an SRAM code load from external component (e.g. QSPI Flash, if not used by Linux).

All that is not natively supported in our HW/SW and need some tricky SW development on your side. Maybe you have to refine your concept to see if it could fit the regular STM32MP1 available mechanisms.

recommended reading:

https://wiki.st.com/stm32mpu/wiki/Power_overview

https://wiki.st.com/stm32mpu/wiki/Coprocessor_power_management

https://wiki.st.com/stm32mpu/wiki/Boot_chains_overview

https://wiki.st.com/stm32mpu/wiki/STM32MP15_ROM_code_overview

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

View solution in original post

1 REPLY 1
PatrickF
ST Employee

That globally not possible, Cortex-M4 is mostly a slave coprocessor of Cortex-A7 Linux.

Cold boot is always from Cortex-A7 BootROM.

Nevertheless Cortex-M4 could be kept running while Linux is in low-power mode (e.g. suspend to RAM).

Alternatively, Cortex-M4 could start (alone) from it's RETRAM upon STANDBY exit (i.e. Linux has been started and put the platform in STANDBY mode), then you could implement an SRAM code load from external component (e.g. QSPI Flash, if not used by Linux).

All that is not natively supported in our HW/SW and need some tricky SW development on your side. Maybe you have to refine your concept to see if it could fit the regular STM32MP1 available mechanisms.

recommended reading:

https://wiki.st.com/stm32mpu/wiki/Power_overview

https://wiki.st.com/stm32mpu/wiki/Coprocessor_power_management

https://wiki.st.com/stm32mpu/wiki/Boot_chains_overview

https://wiki.st.com/stm32mpu/wiki/STM32MP15_ROM_code_overview

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.