Minimising Power Consumption of i.MX 8M Plus in suspend-to-RAM

Hi,

We’re developing an application where it’s critical to minimize power consumption of the i.MX 8M Plus in suspend-to-RAM and were wondering if anyone has any guidance on steps to reduce this in the i.MX 8M Plus SoMs?

“Suspend mode to RAM 0.15 W” is stated under Verdin iMX8M Plus Power Consumption in this document:
https://developer.toradex.com/hardware/hardware-resources/power-consumption/verdin-imx8m-plus-power-consumption/
and ideally we’d like to achieve significantly lower power consumption in suspend-to-RAM - ideally towards the “Total P(mW) 15.14” measured by NXP in AN13054:

https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/imx-processors/195119/1/AN13054.pdfn-notes/AN13054.pdf

Thank you very much for your help,

Will

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


Suspend-to-RAM Configuration on i.MX 8M Plus SoMs

To achieve Suspend-to-RAM on Toradex i.MX 8M Plus modules, you can use the following command(1):

# echo deep > /sys/power/mem_sleep; echo mem > /sys/power/state

(1)

Wake-up Configuration

The system will wake up with WAKE1_MICO# (SODIMM_252, X7-24) pin or with a console keypress(1). You can also configure RTC alarm wake-up(1):

# echo +5 > /sys/class/rtc/rtc1/wakealarm; echo deep > /sys/power/mem_sleep; echo mem > /sys/power/state

(1)

Power Optimization Considerations

The documented suspend modes for i.MX 8M Plus modules include(1):

  • Suspend-to-RAM (deep) State: All clocks, unused peripherals, and PHYs are off, with DDR3L RAM staying in SelfRefresh mode(1)
  • Suspend-to-Idle (S2Idle): Alternative suspend state available(1)

For S2Idle mode, use(1):

# echo s2idle > /sys/power/mem_sleep; echo mem > /sys/power/state

(1)

Application-Level Power Management

If you need to signal suspend/resume events to your application, you can create systemd services that execute before entering suspend mode or after resuming(1). For example, to send signals before suspend(1):

[Unit]
Description=Sends signal USR1 to application signal_test before system entering in suspend mode.
Before=sleep.target

[Service]
Type=oneshot
ExecStart=killall -s SIGUSR1 signal_test
User=root

[Install]
RequiredBy=sleep.target

(1)

The specific power consumption optimization beyond the documented suspend modes would require detailed analysis of your particular application’s peripheral usage and power rail configuration. The documented suspend-to-RAM implementation provides the foundation for low-power operation on Toradex i.MX 8M Plus modules(1).

Best regards, Toradex AI Assistant.

Hi @Will_Robertson!

The answer given by the Toradex AI seems reasonable and is a good starting point. Could you please test it and see if it solves your issue?

Best regards.

Thank you.

This question requires very in-depth domain-specific knowledge of the power management functionality of each chip on the SoM - to give an example of the depth of knowledge required, the data sheet for the PCA9450C chip (which manages power on this SoM) is 97 pages long. The chatbot is simply rearranging content from one of the documents I referred to in the original question - to answer the question requires much deeper domain-specific expertise in the power management functionality of each the chips on this SoM. Please could you refer this question to an engineer with the in-depth knowledge required to suggest what steps could be taken to reduce power consumption in suspend-to-RAM?

Hi @Will_Robertson!

I’ve searched internally and talked to the R&D team, and, as far as we have tested, it is not feasible to get to 15mW of power consumption on Verdin iMX8M Plus since this is achievable using only the SoC and the SoM has more chips and ICs than just the processor.

What we tested and could achieve is around 150mW (as described in the article).

Best regards.