cancel
Showing results for 
Search instead for 
Did you mean: 

Power management with STM32MP15x and OpenAMP_TTY_echo_wakeup example

AHayo.1
Associate II

Hi,

I did some power measurements with a Joulescope which measures the full power given to the card (no distinction between VDD, VDDCORE, etc.) - we chose this way for first measurements without card's resistors modification.

I mostly followed the same steps as explained in the AN5284 application note.

  • For point 3.1 with CoreMark, I've same iterations per seconds and a much higher power measurement which is normal as I measure the full system. But the difference between 1 or 2 core is the same as in the document.
  • For point 3.3 with data acquisition : Here again, I have higher power measurement but it's still consistent as the ratio of power reduction is the same than in theorie.

Then I was interested in point 4.3 (various low power modes) but I did get results I don't understand. Know that I changed the /etc/systemd/sleep.conf as explained here and used the systemctl suspend commend for MPU.

  • When the card is idle (just powered on, but no program running) : 3060 mW
  •  When the card do a for loop : 3160 mW -> ok
  • When doing the LP-STOP : 574 mW -> ok
  • When doing Standby DDR : 906mW -> ??
  • When doing Standby DDR OFF : 1178 mW -> ???

Isn't the Standby supposed to be more power saving than Stop ?

I tried to power measure the OpenAMP_TTY_echo_wakeup example as well :

  • card idle : 2640 mW
  • First scenario : stopping MCU -> 2620 mW (ok small gain)
  • Second scenario ("*delay" & systemctl suspend) : 703 mW
  • Third and fourth with Stop : 615mW
  • Fifth scenario with Standby : 1191 mW

So should I suppose that Standby is less power saving than Stop ? I though Standby is more power saving because on chapter 4.1 it's written that in standby VDDCORE is off whereas in Stop it's on.

How do I know in which mode I am between Stop, LP-Stop and LPLV-Stop ? Is there some logging about it ? Or should I just read the flags in the code ?

Best regards !

1 ACCEPTED SOLUTION

Accepted Solutions
PatrickF
ST Employee

Hi,

I assume you use STM32MP157C-EV1 mother-board (MB1262)+ daughter-board (MB1263) + display + camera.

Measurements from AN5284 section 3.4 were done using only the MB1263 alone (with some instrumentation to measure individual supplies).

I think the strange behavior is coming from MB1262 were some part are not well controlled in low power. This board was not optimized for low power.

Maybe you could try using only the MB1263 board (should boot from SD-Card or eMMC with same Started package).

Regards.

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

12 REPLIES 12
PatrickF
ST Employee

Hi,

I assume you use STM32MP157C-EV1 mother-board (MB1262)+ daughter-board (MB1263) + display + camera.

Measurements from AN5284 section 3.4 were done using only the MB1263 alone (with some instrumentation to measure individual supplies).

I think the strange behavior is coming from MB1262 were some part are not well controlled in low power. This board was not optimized for low power.

Maybe you could try using only the MB1263 board (should boot from SD-Card or eMMC with same Started package).

Regards.

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.
AHayo.1
Associate II

Hi,

Thanks for answer !

I'm using STM32MP157A-EV1 with weston environment yes.

> Maybe you could try using only the MB1263 board

May I ask you how you achieve that ?

The problème is that I'll need the camera for my application. Do you think it's possible to lower power consumption by changing the device tree to disable for example peripherals I don't need (like the display) ?

Would there be some other ways I could try or is it a lost cause ?

Best regards !

You could use the MB1263C board in standalone. Simply unplug it (ensure the board is not powered before doing it). Starter Package will work from eMMC or SD-Card without change.

EV1 platform is not a good candidate for checking power consumption, there is no SW solution for that.

It might be possible to depopulate some MB1262 component, but I fear it is risky and might create a lot of issue. You could first check without the display board (it is easily removable too), it might be guilty of most power.

When using MB1263C in standalone, your could use an USB camera (most Linux compatible camera will work out of the box with Starter Package).

Regards.

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.

Ok !

For me the MB1263 doesn't have USB port. Or aren't we thinking about the same product ?

Best regards !

Edit : are you maybe referring to the STM32MP157C-DK2 ?

You are right, I mixed up different boards.

Yes, Maybe the STM32MP157x-DK2 (or DK1 wthout display and WLAN/BT) is more suitable for you if USB camera is ok.

Regards.

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.

I tried in standalone mode. The power measurements are more logical :

1030 mW for CRun, 302 mW for LP-Stop, 245 mW for Standby DDR SR and 229 mW for Standby DDR off. It's not as impressive as in the AN5284, it might be the peripherals which take a lot.

Hope you don't mind but I've got two last questions I can't understand with my actual knowledges even though I've searched everywhere:

  • When using IPCC as EXTI (line 62) as done in OpenAMP_TTY_echo_wakeup, in which system mode can we go at most ? IPCC isn't listed here.
  • When looking at the given HAL_PWR_EnterSTOPMode :
    • Why isn't there any mention of LVDS to be able to go into LPLV-Stop ?
    • There is an #ifdev CORE_CA7, how can I define it ? I tried in the main.c without success. I've seen that I don't get inside this code with the debuger. Hence, we are in CStop mode but can't chose LP-Stop..?

Best Regards

I think IPCC is not listed as it cannot be used by neither A7 nor M4 side when the platform is in Stop mode (or below). First one core should be woken-up by one of the listed peripheral (the platform is then going to Run mode) before using IPCC to wake-up the other core (if needed).

The usage of LPDS and LVDS bits are controlled by Cortex-A7 side, which is assumed to be the 'platform' power controller. on Cortex-M4 you could just request go in Stop for 'MCU' side and final low power mode depend on the mode allowed by Linux regarding the defined wake up source and the allowed low power modes (as this also depend on your HW, e.g. without STPMIC1, LP_Stop and LPLV-Stop might not be possible).

For the "#ifdef CORE_CA7" this is only for our internal usage, it is not defined in user application (and should not be).

Regards.

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.

Thanks, it's all clear now.

What is left is to know why I'm at 230mW for the Standby DDR off (ie. I have only the MB1263, the alimentation and micro usb). It's like I've got an offset of 200mW for every mode when comparing with the application note. I know that with my system I measure full board but still. 200mW is a lot for an embedded system in Standby mode no ?

I used the following command :

shutdown –h 0

And used first mode when booting.

I don't know where to search for this difference.

I see two main contributors not affected by Standby:

  • LD1 (green led). You could remove R2
  • embedded ST-LINK (U10 + surrounding components). You could place JP1 to force it in reset (no more debug nor UART VCP) or remove D3 to remove supply path from VIN (unclear side effects).
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.