SoC Power Measurement with ARM Energy Probes and Linux EAP Tools
Andy Green, TI Landing Team lead at Linaro, gave an interesting presentation entitled “How to measure SoC power” at Linaro Connect Europe 2012. This talk was specifically aimed at software engineers, so that they know how to properly measure power consumption, and take actions to optimize the software to decrease it.
In the first part of the presentation, he gives an overview of electronics basics with definition of voltage, load, current and power, units used for power measurements (Clue: you need to use Watts), and how voltage, current and power can be measured with voltmeters and ammeters. When you want to measure power in a rail, you would usually insert a shun resistor, use a multimeter and derive the power from the resistance and the measured voltage (P=V2/R). He also gives details about regulator efficiency, choosing measurement sampling…
There are 4 common measurements strategies:
- DC IN – Easiest way, gives the complete board consumption, but you cannot see exactly which parts of the board consume power
- Indirect output-side regulator measurements – Measure at the regulator level
- Shunts on all SoC rails – Useful to measure SoC power
- Shunts on all board assets – Most ideal scenario, shunts on all power consumption in exact detail, using many channels. Samsung Origen board is particularly suited to this measurement strategy as the board breaks power tree into 14 shunts.
The ARM Energy Probe (AEP) allows you to measure power via up to 3 channels composed of 2 voltmeters each. The channels appear as ttyACM serial ports in Linux. The green cable below is used for grounding.
This is the probe used at Linaro for power measurement, and Andy explains in details how to add 3 probes to the Pandaboard by soldering shunts at strategic locations on the board, headers for the probes, etc.. The final result looks like that:
He then explains there can be variability in power measurement due to the
weather temperature, measurement bandwidth (if you are really unlucky), differences between channels, low voltage (15mV) challenges, and more.
After going through electronics basics, power measurement methods, and having massively hacked your board to add probes, you can now take power measurement using AEP app, an open source command line tool for Linux or, possibly better, aepd daemon and seeing the result in an HTML5 page in your browser (Google Chrome or Chrome for Android).
Linux AEP app (arm-probe) gather measurements by synchronizes sampling across multiple energy probes, outputs ascii numbers in column format in a Gnuplot-friendly output, e.g.
Sample# volts amps watts
A better way is to capture the data via aepd daemon and transforms your web browser into a “power scope” as it updates data in real-time at 24 fps. The “power scope” is accessible via a local or remote network link.
What makes it different from an oscilloscope, is that all samples can be recorded in to a file having basically an infinite data memory, and you can just see previous data by scrolling back in the browser. Other features include rail selection (so you only see one channel), instantaneous average, 2 sliders at the top of the window that allow to adjust the duration and power zoom, search function are more.
The source code for arm-probe, aep and libarmep is available on git://git.linaro.org/tools/arm-probe.git. This repo also contains a PDF presentation (arm-energy-probe-101.pdf) that gives further technical details about the ARM Energy Probe, and arm-probe command line tool.
A recording of the presentation is available on Youtube (56 minutes with rather poor audio).