Difference between revisions of "DESK-MX9-L/Deployment/Power Manager"

From DAVE Developer's Wiki
Jump to: navigation, search
(Operational Mode)
 
Line 6: Line 6:
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
|-
 
|-
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000"|2024/04/02
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|2024/04/02
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000"|Power Manager documentation
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Power Manager documentation
 
|-
 
|-
 
|}
 
|}
Line 18: Line 18:
 
== Operational characteristics ==
 
== Operational characteristics ==
  
The measurement of power consumption of the <code>SOM</code> are executed with <code>3.3 V</code> supply.
+
The power consumption measurements for [[AURA SOM | AURA SOM]] are executed with <code>3.3 V</code> power supply.
  
 
== Power consumption ==
 
== Power consumption ==
 +
 +
There are various operating modes available.
  
 
'''Attention''': the SOC used does not support the DVFS and therefore the use of the <code>governor</code> present in the Linux kernel, instead of this functionality to scale the performance to have lower consumption by the SOC there is a new technology the <code>Low Drive mode</code>.
 
'''Attention''': the SOC used does not support the DVFS and therefore the use of the <code>governor</code> present in the Linux kernel, instead of this functionality to scale the performance to have lower consumption by the SOC there is a new technology the <code>Low Drive mode</code>.
Line 29: Line 31:
  
 
* [https://www.nxp.com/docs/en/data-sheet/IMX93CEC.pdf i.MX93 datasheet]
 
* [https://www.nxp.com/docs/en/data-sheet/IMX93CEC.pdf i.MX93 datasheet]
* [https://docs.nxp.com/bundle/AN13917/page/topics/introduction.html AN13917: i.MX 93 Power Consumption Measurement]
+
* [https://docs.nxp.com/bundle/AN13917/page/topics/reducing_power_consumption_0.html AN13917: i.MX 93 Reducing the power Consumption]
 +
* [https://docs.nxp.com/bundle/AN13917/page/topics/overview_of_imx_93_power_architecture.html AN13917: i.MX 93 Power Architecture]
  
 
There are four operating modes(Not all present by default on <code>Aura SOM</code>):
 
There are four operating modes(Not all present by default on <code>Aura SOM</code>):
Line 52: Line 55:
 
| -
 
| -
 
|-
 
|-
| Low drive (LD Mode)
+
| Low drive (LD Mode) (1)
 
| 0.8 V
 
| 0.8 V
 
| 933 MHz
 
| 933 MHz
Line 58: Line 61:
 
| (3)
 
| (3)
 
|-
 
|-
| Low drive (LD Mode)
+
| Low drive (LD Mode) (2)
 
| 0.8 V
 
| 0.8 V
 
| 933 MHz
 
| 933 MHz
Line 66: Line 69:
  
 
Note:
 
Note:
* (1): <code>Over drive</code> is the default operating mode.
+
* (1): <code>Over drive</code> is the default operating mode
* (2): <code>Over drive</code> can be disabled, see [[#Disable Over drive Mode | here]].
+
* (2): <code>Over drive</code> can be disabled, see [[#Device Tree | here]]
* (3): <code>Low drive</code> need to activate from <code>device tree</code> by default these are not present, see [[#Enable Low drive Mode | here]].
+
* (3): <code>Low drive</code> need to be activated from <code>device tree</code> by default these are not present, see [[#Device Tree | here]]
 +
 
  
 
==== Device Tree ====
 
==== Device Tree ====
  
To enable/disable and configure the driver must use the device tree, by default the node <code>lpm</code> present on <code>arch/arm64/boot/dts/freescale/imx93.dtsi</code> are disabled, then the <code>Low Drive Mode</code> are disable.
+
To enable/disable and configure the driver the device tree must used: by default the node <code>lpm</code> present on <code>arch/arm64/boot/dts/freescale/imx93.dtsi</code> is disabled, then the <code>Low Drive Mode</code> is disabled.
  
By default on <code>Aura SOM</code> the support are enable with minimal configuration to have:
+
By default, on <code>Aura SOM</code> the support is enabled with minimal configuration to have:
 
* <code>Over drive Mode</code>
 
* <code>Over drive Mode</code>
 
* <code>Nominal drive Mode</code>
 
* <code>Nominal drive Mode</code>
Line 103: Line 107:
 
</pre>
 
</pre>
  
The node <code>lpm</code> to change the SOC voltage supply need the <code>PMIC buck regulator reference</code> on <code>Aura SOM</code> the PMIC Buck used to power the SOC are the <code>Buck1</code>.
+
The node to change the SOC voltage supply needs the <code>PMIC buck regulator reference</code> on <code>Aura SOM</code> the PMIC Buck used is <code>Buck1</code>.
  
 
===== Enable Low drive Mode =====
 
===== Enable Low drive Mode =====
  
To enable the two modality <code>Low drive Mode</code> add the property <code>ld-mode-enabled</code> on <code>lpm</code> node of device tree.
+
To enable the two modalities <code>Low drive Mode</code> add the property <code>ld-mode-enabled</code> on <code>lpm</code> node of the device tree.
  
By default on <code>Aura SOM</code> this modalities are disabled.
+
By default on <code>Aura SOM</code> these modalities are disabled.
  
'''Attention''': if you want to add this modalities check if you must change the <code>clock rate</code> of the other peripherals like:
+
'''Attention''': if you want to add these modalities, properly check if you must change the <code>clock rate</code> for the other peripherals like:
* <code>flexspi1</code> to <code>266000000</code>.
+
* <code>flexspi1</code> to <code>266000000</code>
* <code>usdhc1</code> to <code>266000000</code>.
+
* <code>usdhc1</code> to <code>266000000</code>
* <code>usdhc2</code> to <code>266000000</code>.
+
* <code>usdhc2</code> to <code>266000000</code>
* <code>usdhc3</code> to <code>266000000</code>.
+
* <code>usdhc3</code> to <code>266000000</code>
  
 
See also the <code>NXP EVK</code> here <code>arch/arm64/boot/dts/freescale/imx93-11x11-evk-ld.dts</code>
 
See also the <code>NXP EVK</code> here <code>arch/arm64/boot/dts/freescale/imx93-11x11-evk-ld.dts</code>
Line 193: Line 197:
  
 
The measurements were performed with follow device connected to the board (Only the most energy-intensive devices are listed).
 
The measurements were performed with follow device connected to the board (Only the most energy-intensive devices are listed).
* Eth0 interface up.
+
* Eth0 interface up
* Eth1 interface up.
+
* Eth1 interface up
* uSD.
+
* uSD
* DSI-HDMI converter and HDMI display up.
+
* DSI-HDMI converter and HDMI display up
  
 
===== Quiet =====
 
===== Quiet =====
  
On quiet the core not have any additional process/task.
+
On quiet the core nt have any additional process/task.
  
 
===== Stressed =====
 
===== Stressed =====
  
 
To simulate high consumption, the following energy-intensive operations were performed:
 
To simulate high consumption, the following energy-intensive operations were performed:
* configured the both eth interface and execute an endless iperf3 with an external server support
+
* both eth interfaces are configured and an endless iperf3 - with external server support - is executed
* use the camera and stream it to the HDMI display
+
* camera streaming a video to the HDMI display
* execute the <code>sat</code>, is a specialized executable to stress the SOC and RAM memory
+
* execute the <code>sat</code> for stressing the SOC and the RAM memory
  
 
Then there are four energy-intensive operations.
 
Then there are four energy-intensive operations.
 
==== Power state ====
 
 
The power state of kernel can be obtain with follow command:
 
<pre>
 
root@desk-mx93-rev0:~# cat /sys/power/state
 
freeze mem
 
</pre>
 
 
In this case are present:
 
* <code>mem</code> (Suspend)
 
* <code>freeze</code>
 
 
To use <code>mem</code> & <code>freeze</code> there are need setup a wake up source, on example the console UART as a wake up source
 
<pre>
 
echo enabled > /sys/class/tty/ttyLP0/power/wakeup
 
</pre>
 
 
Change the power status like the follow command:
 
<pre>
 
echo mem > /sys/power/state
 
</pre>
 
 
<pre>
 
root@desk-mx93-rev0:~# echo mem > /sys/power/state
 
[  485.684754] PM: suspend entry (deep)
 
[  485.764566] Filesystems sync: 0.076 seconds
 
[  485.769692] Freezing user space processes
 
[  485.775189] Freezing user space processes completed (elapsed 0.001 seconds)
 
[  485.782180] OOM killer disabled.
 
[  485.785418] Freezing remaining freezable tasks
 
[  485.791072] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
 
[  485.798472] printk: Suspending console(s) (use no_console_suspend to debug)
 
</pre>
 
 
write something on console:
 
<pre>
 
...
 
[  485.842439] imx-dwmac 428a0000.ethernet eth1: Link is Down
 
[  485.842745] imx-dwmac 428a0000.ethernet eth1: FPE workqueue stop
 
[  485.857765] fec 42890000.ethernet eth0: Link is Down
 
[  485.858356] PM: suspend devices took 0.052 seconds
 
[  485.860465] Disabling non-boot CPUs ...
 
[  485.860876] psci: CPU1 killed (polled 0 ms)
 
[  485.862050] Enabling non-boot CPUs ...
 
[  485.862201] Detected VIPT I-cache on CPU1
 
[  485.862246] cacheinfo: Unable to detect cache hierarchy for CPU 1
 
[  485.862255] GICv3: CPU1: found redistributor 100 region 0:0x0000000048060000
 
[  485.862291] CPU1: Booted secondary processor 0x0000000100 [0x412fd050]
 
[  485.862564] CPU1 is up
 
[  485.926184] imx-dwmac 428a0000.ethernet eth1: configuring for phy/rgmii-id link mode
 
[  485.936472] imx-dwmac 428a0000.ethernet eth1: No Safety Features support found
 
[  485.936488] imx-dwmac 428a0000.ethernet eth1: IEEE 1588-2008 Advanced Timestamp supported
 
[  485.936676] imx-dwmac 428a0000.ethernet eth1: FPE workqueue start
 
[  486.027552] PM: resume devices took 0.164 seconds
 
[  486.028522] remoteproc remoteproc0: releasing imx-rproc
 
[  486.125601] OOM killer enabled.
 
[  486.128751] Restarting tasks ... done.
 
[  486.135997] random: crng reseeded on system resumption
 
[  486.141289] PM: suspend exit
 
root@desk-mx93-rev0:~# [  488.996995] fec 42890000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
 
[  488.998759] imx-dwmac 428a0000.ethernet eth1: Link is Up - 1Gbps/Full - flow control rx/tx
 
[  489.004784] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
 
[  489.021014] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
 
</pre>
 
  
 
==== Measurements  ====
 
==== Measurements  ====
Line 282: Line 221:
 
!Current
 
!Current
 
!Power
 
!Power
!Diff
+
!Diff Normal
 +
!Diff Stress
 
|-
 
|-
 
| '''Quiet-normal (LPM: Over drive)'''
 
| '''Quiet-normal (LPM: Over drive)'''
 
| 0,5 A
 
| 0,5 A
 
| 1.65 W
 
| 1.65 W
| Reference
+
| Normal reference
 +
| -50% (Reference: <code>Stressed-normal (LPM: Over drive)</code>)
 
|-
 
|-
 
| '''Quiet-nominal (LPM: Nominal drive)'''
 
| '''Quiet-nominal (LPM: Nominal drive)'''
Line 293: Line 234:
 
| 1.55 W
 
| 1.55 W
 
| -6 %
 
| -6 %
 +
| -32% (Reference: <code>Stressed-nominal (LPM: Nominal drive)</code>)
 
|-
 
|-
 
| '''Stressed-normal (LPM: Over drive)'''
 
| '''Stressed-normal (LPM: Over drive)'''
Line 298: Line 240:
 
| 2.475 W  
 
| 2.475 W  
 
| +50%
 
| +50%
 +
| Stress reference
 
|-
 
|-
 
| '''Stressed-nominal (LPM: Nominal drive)'''
 
| '''Stressed-nominal (LPM: Nominal drive)'''
Line 303: Line 246:
 
| 1.55 W
 
| 1.55 W
 
| +24%
 
| +24%
 +
| -17 %
 
|-
 
|-
 
| '''Suspend'''
 
| '''Suspend'''
Line 308: Line 252:
 
| 0.152 W
 
| 0.152 W
 
| -91 %
 
| -91 %
 +
| -93 %
 
|-
 
|-
 
|'''Freeze'''
 
|'''Freeze'''
Line 313: Line 258:
 
|0.59 W
 
|0.59 W
 
| -64 %
 
| -64 %
 +
| -76 %
 
|}
 
|}
  

Latest revision as of 08:31, 5 April 2024

History
Issue Date Notes
2024/04/02 Power Manager documentation



Power Manager[edit | edit source]

Operational characteristics[edit | edit source]

The power consumption measurements for AURA SOM are executed with 3.3 V power supply.

Power consumption[edit | edit source]

There are various operating modes available.

Attention: the SOC used does not support the DVFS and therefore the use of the governor present in the Linux kernel, instead of this functionality to scale the performance to have lower consumption by the SOC there is a new technology the Low Drive mode.

Low Drive mode[edit | edit source]

Documentation from NXP:

There are four operating modes(Not all present by default on Aura SOM):

Mode VDD SOC A55 Max Frequency DRAM Max Frequency Note
Over drive (OD Mode, default) 0.9 V 1700 MHz 1866 MHz (3733 MTS) (1)(2)
Nominal drive (ND Mode) 0.85 V 1400 MHz 1400 MHz (2800 MTS) -
Low drive (LD Mode) (1) 0.8 V 933 MHz 933 MHz (1866 MTS) (3)
Low drive (LD Mode) (2) 0.8 V 933 MHz 625 MTS (3)

Note:

  • (1): Over drive is the default operating mode
  • (2): Over drive can be disabled, see here
  • (3): Low drive need to be activated from device tree by default these are not present, see here


Device Tree[edit | edit source]

To enable/disable and configure the driver the device tree must used: by default the node lpm present on arch/arm64/boot/dts/freescale/imx93.dtsi is disabled, then the Low Drive Mode is disabled.

By default, on Aura SOM the support is enabled with minimal configuration to have:

  • Over drive Mode
  • Nominal drive Mode

To do this see arch/arm64/boot/dts/freescale/imx93-aura.dtsi:

...
&lpm {
	soc-supply = <&buck1>;
	status = "okay";
};
...
&lpi2c2 {
        ....
	pmic@25 {
		compatible = "nxp,pca9451a";
                ...
		regulators {
			buck1: BUCK1 {
				...
			};
		...
		};
	...
	};
};
...

The node to change the SOC voltage supply needs the PMIC buck regulator reference on Aura SOM the PMIC Buck used is Buck1.

Enable Low drive Mode[edit | edit source]

To enable the two modalities Low drive Mode add the property ld-mode-enabled on lpm node of the device tree.

By default on Aura SOM these modalities are disabled.

Attention: if you want to add these modalities, properly check if you must change the clock rate for the other peripherals like:

  • flexspi1 to 266000000
  • usdhc1 to 266000000
  • usdhc2 to 266000000
  • usdhc3 to 266000000

See also the NXP EVK here arch/arm64/boot/dts/freescale/imx93-11x11-evk-ld.dts

Disable Over drive Mode[edit | edit source]

To disable the Over drive Mode and have by default the Nomial drive Mode add the property no-od-mode on lpm node of device tree.

Command[edit | edit source]

The driver/imx/soc/imx93_lpm.c driver uses imx-atf to manage the operating mode and can be controlled using a sysfs interface.

Read the current mode:

root@desk-mx93-rev0:~# cat /sys/devices/platform/imx93-lpm/mode
System is in OD mode with DDR 3733 MTS!

Read the current clock of core.

root@desk-mx93-rev1:~# mhz
1690 MHz, 0.5917 nanosec clock

To change on Over drive Mode:

root@desk-mx93-rev1:~# echo 0 > /sys/devices/platform/imx93-lpm/mode
[ 9456.025419] System switching to OD mode...
root@desk-mx93-rev1:~# cat /sys/devices/platform/imx93-lpm/mode
System is in OD mode with DDR 3733 MTS!
root@desk-mx93-rev1:~# mhz
1690 MHz, 0.5917 nanosec clock

To change on Nominal drive Mode:

root@desk-mx93-rev1:~# echo 1 > /sys/devices/platform/imx93-lpm/mode
[ 9557.112015] System switching to ND mode...
root@desk-mx93-rev1:~# cat /sys/devices/platform/imx93-lpm/mode
System is in ND mode with DDR 1866 MTS!
root@desk-mx93-rev1:~# mhz
1398 MHz, 0.7153 nanosec clock

To change on Low drive Mode (1866 MTS) (Modality not present by default):

root@desk-mx93-rev1:~# echo 2 > /sys/devices/platform/imx93-lpm/mode
[ 9623.164150] System switching to LD/SWFFC mode...
root@desk-mx93-rev1:~# cat /sys/devices/platform/imx93-lpm/mode
System is in LD mode with DDR 1866 MTS!
root@desk-mx93-rev1:~# mhz
898 MHz, 1.1136 nanosec clock

To change on Low drive Mode (625 MTS) (Modality not present by default):

root@desk-mx93-rev1:~# echo 3 > /sys/devices/platform/imx93-lpm/mode
[ 9648.546368] System switching to LD/SWFFC mode...
root@desk-mx93-rev1:~# cat /sys/devices/platform/imx93-lpm/mode
System is in LD mode with DDR 625 MTS!
root@desk-mx93-rev1:~# mhz
898 MHz, 1.1136 nanosec clock

Operational Mode[edit | edit source]

The typical operating modes envisaged are:

  • Quiet-normal (LPM: Over drive)
  • Quiet-nominal (LPM: Nominal drive)
  • Stressed-normal (LPM: Over drive)
  • Stressed-nominal (LPM: Nominal drive)
  • Suspend
  • Freeze

Setup[edit | edit source]

The measurements were performed with follow device connected to the board (Only the most energy-intensive devices are listed).

  • Eth0 interface up
  • Eth1 interface up
  • uSD
  • DSI-HDMI converter and HDMI display up
Quiet[edit | edit source]

On quiet the core nt have any additional process/task.

Stressed[edit | edit source]

To simulate high consumption, the following energy-intensive operations were performed:

  • both eth interfaces are configured and an endless iperf3 - with external server support - is executed
  • camera streaming a video to the HDMI display
  • execute the sat for stressing the SOC and the RAM memory

Then there are four energy-intensive operations.

Measurements[edit | edit source]

Mode Current Power Diff Normal Diff Stress
Quiet-normal (LPM: Over drive) 0,5 A 1.65 W Normal reference -50% (Reference: Stressed-normal (LPM: Over drive))
Quiet-nominal (LPM: Nominal drive) 0.469 A 1.55 W -6 % -32% (Reference: Stressed-nominal (LPM: Nominal drive))
Stressed-normal (LPM: Over drive) 0.75 A 2.475 W +50% Stress reference
Stressed-nominal (LPM: Nominal drive) 0.469 A 1.55 W +24% -17 %
Suspend 0.046 A 0.152 W -91 % -93 %
Freeze 0.179 A 0.59 W -64 % -76 %