Power consumption (SBC Lynx)

From DAVE Developer's Wiki
Jump to: navigation, search
Info Box
SBC Lynx-top.png Applies to SBC Lynx

Introduction[edit | edit source]

Providing theoretical power consumption values would be useless for the majority of system designers building their application upon SBC Lynx board. Practically speaking, these figures would be of no help when it comes to size power supply unit or to perform thermal design of real systems. Instead, several configurations have been tested in order to provide figures that are measured on real-world use cases.

Please note that SBC Lynx platform is extremely flexible[a], so it is virtually impossible to test for all possible configurations and applications on the market. The use cases here presented should cover most of real-world scenarios. However actual customer's application might require more power than values reported here or customer's use case may be differ significantly with respect to the ones here considered. Therefore, application-specific requirements have always to be taken into consideration in order to size power supply unit and to implement thermal management properly.

Use case #1: headless system[edit | edit source]

The following picture shows a simplified block diagram of the measurement system.


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[edit | edit source]

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.

Checkpoint Board power consumption
[mW]
Processor subsystem power consumption
[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 userspace governor)
  • StressAppTest application is used to stress CPU and DDR3L RAM (https://github.com/stressapptest/stressapptest)
  • Complete Stress Test includes the following tests:
    • StressAppTest
    • 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: iperf TCP test running

Idle configurations[edit | edit source]

  • 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[edit | edit source]

In this case the default governor (interactive) is used.

Ethernet controller and PHY are active (but cable is disconnected).

root@sbc-lynx:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
interactive
Board power consumption (probe #1)
[mW]
Processor subsystem power consumption (probe #2) [1]
[mW]
206 177

Optimized idle[edit | edit source]

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.[1] 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.
Average board power consumption (probe #1)
[mW]
Average processor subsystem power consumption (probe #2)
[mW]
71 63


#!/bin/bash

echo 8 > /proc/sys/kernel/printk

ifconfig eth0 down

echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Deep-sleep mode (aka suspend)[edit | edit source]

The same test bed described in the Idle configuration section has been used.

First the system has been configured to set up optimized idle mode, as described here. Then deep-sleep mode has been enabled by issuing the following commands:

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

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.

Average board power consumption (probe #1)
[mW]
Average processor subsystem power consumption (probe #2)
[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.

Use case #2: system equipped with LCD panel[edit | edit source]

The following picture shows a simplified block diagram of the measurement system.


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 (including LCD panel logic and backlight if present)
  • 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[edit | edit source]

Measurements have been performed on the following platform:

  • 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)
  • System software: XUELK 0.9.0, patched to include 24-bit RGB LCD support
  • root file system mounted via NFS over Ethernet connection
  • processor's LDO is enabled (required to perform voltage scaling).

The following table shows the summary result of data collected at different checkpoints:

Checkpoint Board power consumption (probe #1)
[mW]
Processor subsystem power consumption (probe #2)
[mW]
U-Boot prompt 760 568
Linux prompt [1] 2390 1270
StressAppTest (LCD Blanked) 1980 1610
StressAppTest 2780 1620
Complete Stress Test 3070 1880

[1] In this condition, Linux kernel spends most of the time in idle state because user space applications and interrupt service routines run for very short periods. However, LCD is turned on (LCD power consumption is about 600mW).

Additional notes and reference:

  • U-boot is set run processor at 396MHz
  • At U-boot prompt the LCD interface and circuitry are turned off
  • At Linux prompt, a fixed processor clock frequency of 528MHz has been set (via userspace governor)
  • StressAppTest application is used to stress CPU and DDR3L RAM (https://github.com/stressapptest/stressapptest)
  • A 4.3 inches 480x272 LCD is used to test the 24bit parallel video interface output. The LCD backlight is driven by the 12V VIN using an external circuitry; brightness is set to 100%
  • Complete Stress Test includes the following tests:
    • StressAppTest
    • 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: iperf TCP test running
    • NAND: stress test with mtd kernel modules.

Idle configurations[edit | edit source]

Some power-constrained applications can't afford to make use of deep-sleep mode when the system "has nothing to do", because wake up process may take too long to complete. In such situations aggressive implementation of so-called idle mode can come to help. Basic assumption is that the system spends most of the time in an idle condition (that is there are no user applications ready to run nor interrupt requests to serve).

Two idle configurations have been tested, detailed in the following sections: generic idle and system idle. System idle is the same nomenclature used NXP official documentation (specifically processor's data sheet[2] and AN5170 application note[1]).

Measurements have been performed on the following platform (also denoted as testbed2 in the rest of the document):

  • SBC Lynx rev.0 (S-XUBB0000C0R)
  • System software: XUELK 0.9.0
  • UBIFS root file system mounted from Flash NAND
  • processor's LDO is enabled (required to perform voltage scaling)
  • Some hardware optimizations have been implemented to minimize power consumption:
    • CAN transceiver has been turned off
    • all the unneeded pull-ups on signals in the VDD_SNVS_IN voltage domain have been removed
    • RS232 transceiver is shutdown via unused processor's GPIO
    • RS485 polarization network has been removed.

Generic idle[edit | edit source]

In this case the default governor (interactive) is used.

Ethernet controller and PHY are active (but cable is disconnected).

root@sbc-lynx:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
interactive
Board power consumption (probe #1) [1]
[mW]
Processor subsystem power consumption (probe #2) [1]
[mW]
370 325

[1] 24MHz active oscillator power consumption is included. As the board under test is equipped with iMX6UL revision 1.0, active oscillator is required to implement the fix described by errata ERR009455. Typical consumption of this oscillator is about 20mW. Future revision of the board will be populated with silicon revision 1.1 or newer. Thus active oscillator will be removed. For more details please refer to Chip Errata for the i.MX 6UltraLite[3].

Optimized idle[edit | edit source]

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[1]. 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.
Board power consumption (probe #1) [1]
[mW]
Processor subsystem power consumption (probe #2) [1]
[mW]
90 72

[1] 24MHz active oscillator power consumption is included. As the board under test is equipped with iMX6UL revision 1.0, active oscillator is required to implement the fix described by errata ERR009455. Typical consumption of this oscillator is about 20mW. Future revision of the board will be populated with silicon revision 1.1 or newer. Thus active oscillator will be removed. For more details please refer to Chip Errata for the i.MX 6UltraLite[3].

The following commands have been used in order to configure the system. The command ifconfig eth0 down disables processor's Ethernet controller and puts the external PHY in power-down mode.

#!/bin/bash

echo 8 > /proc/sys/kernel/printk

ifconfig eth0 down

echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

# Disable MPUART0 (RS232 transceiver)
# MPUART0_ON
echo 83 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio83/direction
echo 0 > /sys/class/gpio/gpio83/value

# MPUART0_DEN
echo 136 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio136/direction
echo 0 > /sys/class/gpio/gpio136/value

# MPUART0_RXEN
echo 137 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio137/direction
echo 0 > /sys/class/gpio/gpio137/value

# Disable MPUART1 (RS485 transceiver)
# MPUART1_ON
echo 84 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio84/direction
echo 0 > /sys/class/gpio/gpio84/value

The system automatically enters to and exits from system idle mode when needed:

root@sbc-lynx:~# ./idle.sh
root@sbc-lynx:~#
Bus freq set to 24000000 start...
Bus freq set to 24000000 done!

Bus freq set to 400000000 start...
Bus freq set to 400000000 done!

Bus freq set to 24000000 start...
Bus freq set to 24000000 done!

Bus freq set to 400000000 start...
Bus freq set to 400000000 done!

Bus freq set to 24000000 start...
Bus freq set to 24000000 done!

root@sbc-lynx:~#
root@sbc-lynx:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave

It is worth to remember that the use of powersave governor has a drawback in terms of system reactivity, because processor is relatively slow to get out of the idle condition. This can lead to phenomena such as the UART RX FIFO overrun, shown in the following box[b]. In this example, a relatively long command string has been pasted into the serial console terminal:

root@sbc-lynx:~# imx-uart 2020000.serial: Rx FIFO overrun
cat /sys/devices/system/cpu/cpugovernor
cat: /sys/devices/system/cpu/cpugovernor: No such file or directory
root@sbc-lynx:~#

Deep-sleep mode (aka suspend)[edit | edit source]

The same test bed described in the Idle configuration section has been used.

First the system has been configured to set up optimized idle mode, as described here. Then deep-sleep mode has been enabled by issuing the following commands:

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

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.

Board power consumption (probe #1) [1]
[mW]
Processor subsystem power consumption (probe #2) [1]
[mW]
57 47

[1] When entering DSM mode, iMX6UL turns 24MHz external active oscillator off. As the board under test is equipped with iMX6UL revision 1.0, active oscillator is required to implement the fix described by errata ERR009455. For more details please refer to Chip Errata for the i.MX 6UltraLite[3].

[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.



  1. Consider for example the expandability provided by J45/J52 interfaces.
  2. This is the same issue described here.

References[edit | edit source]

  1. 1.0 1.1 1.2 NXP Semiconductors, i.MX 6UltraLite Power Consumption Measurement, Rev. 1, 04/2016
  2. Freescale Semiconductor, i.MX 6UltraLite Applications Processors for Industrial Products Data Sheet, Rev. 1, 04/2016
  3. 3.0 3.1 3.2 Freescale Semiconductor, Chip Errata for the i.MX 6UltraLite, Rev. 0.1, 02/2016