Open main menu

DAVE Developer's Wiki β

Changes

Power consumption (SBC Lynx)

4,929 bytes added, 09:31, 27 January 2017
Idle configurations
==Use case #1: headless system==
<div id="PSUBlockDiagramHeadless">The following picture shows a simplified block diagram of the measurement system.</div>
 
 
[[File:SBCLynx-simplified-PSU-headless.png|thumb|center|600px|Simplified block diagram of the measurement system]]
 
 
 
Two custom power probes have been used:
*power probe #1 is connected to the input power rail (12V) supplying the entire system
*power probe #2 is connected to the input power rail of the PMIC NXP PF3000 (nominal voltage is 3.75V); this, in turn, powers the processor subsystem.
=== Heavy load configurations===
Measurements have been performed on the following platform:
* SBC Lynx rev.A (S-XUBB0110C1R)
* System software: XUELK 1.1.0
** U-Boot: U-Boot 2015.04-xuelk-1.1.0 (Nov 25 2016 - 16:43:19), Build: jenkins-XUELK_U-Boot-8
** Kernel: Linux sbc-lynx 3.14.52-xuelk-1.1.0-00026-g88e5473 #36 SMP PREEMPT Tue Dec 13 15:20:14 CET 2016 armv7l GNU/Linux
*root file system is stored on NAND flash
* processor's LDO is enabled (required to perform voltage scaling).
 
The following table shows the summary result of data collected at different checkpoints.
{|class="wikitable" style="text-align: center;"
|-
!Checkpoint
!Board power consumption<br>[mW]
!Processor subsystem power consumption<br>[mW]
|-
| U-Boot prompt || 330 || 282
|-
| Linux prompt [1]|| 268 || 230
|-
| StressAppTest || 840 || 721
|-
| Complete Stress Test || 834 || 725
|-
|}
 
 
Additional notes and reference:
* U-boot is set run processor at 396MHz
* At Linux prompt, a fixed processor clock frequency of 528MHz has been set (via <code>userspace</code> governor)
* <code>StressAppTest</code> application is used to stress CPU and DDR3L RAM (https://github.com/stressapptest/stressapptest)
* Complete Stress Test includes the following tests:
** <code>StressAppTest</code>
** USB host: read/write/verify operations on a USB memory stick
** USB otg tested as Host: read/write/verify operations on an USB memory stick
** uSD card: read/write/verify operations
** Ethernet: <code>iperf</code> TCP test running
 
=== Idle configurations ===
* SBC Lynx rev.A (S-XUBB0110C1R)
* System software: XUELK 1.1.0
** U-Boot: U-Boot 2015.04-xuelk-1.1.0 (Nov 25 2016 - 16:43:19), Build: jenkins-XUELK_U-Boot-8
** Kernel: Linux sbc-lynx 3.14.52-xuelk-1.1.0-00026-g88e5473 #36 SMP PREEMPT Tue Dec 13 15:20:14 CET 2016 armv7l GNU/Linux
* root file system stored in NAND flash
* CAN transceiver not present
 
===Generic idle===
In this case the default governor (<code>interactive</code>) is used.
 
Ethernet controller and PHY are active (but cable is disconnected).
<pre>
root@sbc-lynx:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
interactive
</pre>
{|class="wikitable" style="text-align: center;"
|-
!Board power consumption ([[#PSUBlockDiagramHeadless|probe #1]])<br>[mW]
!Processor subsystem power consumption ([[#PSUBlockDiagramHeadless|probe #2]]) [1]<br>[mW]
|-
| 206||177
|-
|}
 
===Optimized idle===
 
In this case the <code>powersave</code> governor is used. Most importantly, Ethernet interface is disabled, as described in i.MX 6UltraLite Power Consumption Measurement application note.<ref name="AN5170">NXP Semiconductors, ''i.MX 6UltraLite Power Consumption Measurement'', Rev. 1, 04/2016</ref> This allows to reduce power consumption significantly because
* processor's peripheral bus can be disabled as well
* external PHY is put in power-down mode.
{|class="wikitable" style="text-align: center;"
|-
!Average board power consumption ([[#PSUBlockDiagramHeadless|probe #1]])<br>[mW]
!Average processor subsystem power consumption ([[#PSUBlockDiagramHeadless|probe #2]])<br>[mW]
|-
| 71 || 63
|-
|}
 
 
<pre>
#!/bin/bash
 
echo 8 > /proc/sys/kernel/printk
 
ifconfig eth0 down
 
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
</pre>
 
===Deep-sleep mode (aka suspend)===
The same test bed described in the [[#Idle configurations|Idle configuration]] section has been used.
 
First the system has been configured to set up optimized idle mode, as described [[#Optimized idle|here]].
Then ''deep-sleep mode'' has been enabled by issuing the following commands:
<pre>
root@sbc-lynx:~# echo enabled > /sys/devices/soc0/soc.0/2000000.aips-bus/2000000.spba-bus/2020000.serial/tty/ttymxc0/power/wakeup
root@sbc-lynx:~# echo mem > /sys/power/state</pre>
The first command is used to enable the console UART as wake up source.
 
The following table recaps the power consumptions measured under this condition.
{|class="wikitable" style="text-align: center;"
|-
!Average board power consumption ([[#PSUBlockDiagramHeadless|probe #1]])<br>[mW]
!Average processor subsystem power consumption ([[#PSUBlockDiagramHeadless|probe #2]])<br>[mW]
|-
| 51||43
|-
|}
 
 
Ethernet PHY supports several power-management modes. The most aggressive is the ''slow-oscillator mode''. At the time of this writing, Linux kernel does not support this mode. The ''power-down mode'' is used instead. If ''slow-oscillator mode'' were implemented, about 7mW would be spared.
<br />
<br />
==Use case #2: system equipped with LCD panel==
===Heavy load configurations===
Measurements have been performed on the following platform (also denoted as ''testbed1'' in the rest of the document):
* SBC Lynx rev.0 (S-XUBB0000C0R) equipped with a plug-in board for 24-bit RGB LCD interfacing
*LCD p/n: KOE TX11D06vm2Apa (https://www.koe-europe.com/doc/TX11D06VM2APA.pdf)
4,650
edits