Skip to main content
Explorer
September 6, 2019
Solved

SMT32MP1 MCU as Power Management Unit

  • September 6, 2019
  • 1 reply
  • 1015 views

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?

    This topic has been closed for replies.
    Best answer by PatrickF

    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

    1 reply

    PatrickFAnswer
    Technical Moderator
    September 6, 2019

    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