Open main menu

DAVE Developer's Wiki β

Changes

Power consumption (SBC Lynx)

4,420 bytes added, 09:10, 27 January 2017
Use case #1: headless system
==Use case #1: headless system==
The following picture shows a simplified block diagram of the measurement system.
 
TBD
=== Heavy load ===
* 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
* processor's LDO is enabled (required to perform voltage scaling).
 
 
{|class="wikitable" style="text-align: center;"
|-
!Checkpoint
!Board power consumption (VIN)<br>[mW]
!Processor subsystem power consumption (VSOM)<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
** NAND: RFS
=== 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
*** bootcmd: mw.l 21b0020 800; run net_nand
** 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
*** branch: http://gitlab.lan.dave.eu/lynx/linux-2.6-imx/commits/dev-1.1.0-powerConsumption
** RFS: R:\opt\nfsroot\lynx\xuelk-1.1.0-networking
* root file system stored in nand
* ethernet on via ifconfig
* 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 ([[#PSUBlockDiagram|probe #1]])<br>[mW]
!Processor subsystem power consumption ([[#PSUBlockDiagram|probe #2]]) [1]<br>[mW]
|-
| 206||177
|-
|}
 
===Optimized idle===
 
In this case the powersave governor is used. Most importantly, Ethernet interface is disabled, as described in i.MX 6UltraLite Power Consumption Measurement application note[2]. 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 ([[#PSUBlockDiagram|probe #1]])<br>[mW]
!Average processor subsystem power consumption ([[#PSUBlockDiagram|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 ([[#PSUBlockDiagram|probe #1]])<br>[mW]
!Average processor subsystem power consumption ([[#PSUBlockDiagram|probe #2]])<br>[mW]
|-
| 51||43
|-
|}
 
 
[2] 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==
4,650
edits