44773.jpg

Software galt nie als Energieverbraucher. Energie wird aber bei jedem Taktzyklus verbraucht: Der Code verdient also mehr Aufmerksamkeit, vor allem in energiesensitiven Anwendungen. Es reicht bei weitem nicht, den  Mikrocontroller möglichst lange in den Sleep-Modus zu schicken oder den Code zu verkleinern, um die Speicherauslastung zu verringern.

Auf einen Blick

Wer optimieren will, braucht Messwerte zur Erfolgskontrolle. Energy Micro stellt mit dem Energy-Aware-Profiler und der dazugehörenden Hardware passende Tools bereit: Sie zeigen nicht nur, wie viel Strom das System braucht, sondern auch welche Code-Stelle zu wie viel Energieverbrauch führt.

Wie sich Programmierdetails auswirken, zeigt der Unterschied zwischen einer While-Schleife (Polling) und einer Interrupt-Serviceroutine. Bei ersterer muss der Prozessor im Aktivzustand verbleiben, statt in einen Sleep-Modus überzugehen. Werden diese Art von Energieverbrauchsfehler in Feld- oder Burn-in-Tests festgestellt, ist es meist zu spät oder zu teuer, um sie zu beseitigen. Die Embedded-System-Entwicklung sollte heute aus drei Phasen besehen:

  • Hardware-Debugging
  • Software-Funktionsdebugging
  • Software-Energieverbrauchsdebugging

Volle Kontrolle der Hardwareumgebung des Mikrocontrollers und der Gesamtsoftware- und Peripherienutzung sind entscheidende Faktoren bei der Verringerung des Gesamtstromverbrauchs und bei der Maximierung der Batterielebensdauer.

Gewissheit durch Messungen

Für einfache Messungen eines Hardwareaufbaus genügen ein Oszilloskop oder Multimeter. Der Entwickler muss die Werte in eine Tabelle eintragen und extrapolieren, um eine vernünftige Abschätzung der Batterielebensdauer seines Systems zu erhalten. Es fehlt aber die Beziehung zwischen Stromverbrauch und Programmablauf. Selbst ein Logik-Analyzer als Code-Betrachtungswerkzeug stellt diesen Zusammenhang nicht her.

Energy Micro ist davon überzeugt, dass für energieoptimierte MCU-Designs neben dem richtigen Mikrocontroller auch Entwicklungskits nötig sind, die den Stromverbrauch eines Prototypen zuverlässig messen sowie unterstützende Softwaretools, die den klaren Zusammenhang zwischen dem verbrauchten Strom und dem laufenden Code herstellen.

Passende Hardware

Bild 1: Die EFM32-Gecko-Mikrocontroller-Familie hat Energy Micro speziell für stromsparende Anwendungen optimiert.

Bild 1: Die EFM32-Gecko-Mikrocontroller-Familie hat Energy Micro speziell für stromsparende Anwendungen optimiert.Energy Micro

Den ARM-Cortex-M3-basierten EFM32 Gecko (Bild 1) hat Energy Micro speziell für stromsparende Anwendungen entwickelt. Der Hersteller hat auf geringe aktive Leistungsaufnahme und niedrigen Standby-Strom geachtet sowie für schnelle Aufwach- und Befehlsausführungszeiten gesorgt. Die MCU ist zudem mit stromsparender Peripherie ausgestattet, die autonom – also unabhängig vom Prozessor-Core – arbeiten kann, was eine längere Verweildauer des Prozessors im Sleep-Zustand ermöglicht. Weiterhin stehen verschiedene Stromsparmodi zur Verfügung: vom Shut-off-Modus EM4 mit 20 nA bis zum Run-Modus mit 160 µA/MHz.

Das AEM-System (Advanced Energy Monitoring, Bild 2) des EFM32-Entwicklungskits bietet einen Überblick über den Stromverbrauch der Anwendung in Echtzeit. Dazu dient das integrierte LCD. Das AEM-System tastet den Stromfluss durch die MCU-Versorgungsschiene ab und stellt diesen sofort zusammen mit der Spannung und den Zeitdaten auf dem Display dar. Der Energieverbrauch entspricht dann einfach der Fläche unterhalb der Stromkurve.

Bild 2: Das EFM32-Gecko-MCU-Entwicklungskit enthält das Advanced Energy Monitoring System (AEM), um den Stromverbrauch exakt zu bestimmen.

Bild 2: Das EFM32-Gecko-MCU-Entwicklungskit enthält das Advanced Energy Monitoring System (AEM), um den Stromverbrauch exakt zu bestimmen.Energy Micro

Der Dynamikbereich des integrierten AEM-Systems reicht von 100 nA bis 50 mA, womit sich Änderungen beim Stromverbrauch selbst in äußerst stromsparenden Anwendungen erkennen lassen. Dabei wird nicht nur der von der MCU verbrauchte Strom gemessen, sondern auch der Verbrauch anderer Prototypen-Systemkomponenten, solange diese über eine AEM-überwachte Schiene versorgt werden.

Software-Tools zum Stromsparen

Der EFM32 kann Programmzähler-Muster über den Standard-SWO-Anschluss (Serial Wire Output) des ARM-Cores ausgeben. Diese Information kann man zusammen mit den Strom-, Spannungs- und Timing-Daten des AEM-Systems über USB an ein Windows-Softwaretool namens Energy-Aware-Profiler senden (Bild 3). Zusammen mit der Code-Objektdatei (*.out) verfügt die Profiler-Software über alle Informationen, die den direkten Zusammenhang zwischen Energieverbrauch und Code herstellen. Damit steht ein Energie-Debugging zur Verfügung.

Bild 3: Der Energy-Aware-Profiler zeigt den Zusammenhang zwischen Stromverbrauch, C-Code und der verbrauchten Energie des jeweiligen Code-Abschnitts. Durch Klicken auf eine Stromspitze wird der dazugehörige Code markiert.

Bild 3: Der Energy-Aware-Profiler zeigt den Zusammenhang zwischen Stromverbrauch, C-Code und der verbrauchten Energie des jeweiligen Code-Abschnitts. Durch Klicken auf eine Stromspitze wird der dazugehörige Code markiert.Energy Micro

Das Tool verfügt über drei wesentliche Fenster: die Code-Auflistung, die Funktionsliste und eine Stromverbrauchsgrafik. Klickt der Anwender auf einen beliebigen Punkt der Stromgrafik, hebt das Tool den Code-Abschnitt hervor, der für diesen Stromverbrauch verantwortlich ist. Die Stromgrafik wird standardmäßig logarithmisch dargestellt, der Profiler kann die Grafik aber für mehr Detailtreue auch linear wiedergeben. Die Funktionsliste schließlich beschreibt den summierten Energieverbrauch jeder Funktion und den jeweiligen Prozentsatz der verbrauchten Gesamtenergie.

Mehr Details

Neben der Darstellung des Code-Abschnitts und des dazugehörigen Stromverbrauchs zu einem bestimmten Zeitpunkt, zeigt die Code-Auflistung noch eine weitere Daten: jeweils ablaufende Funktion, letzte Programmzähler-Muster, Strom, Spannung und Zeitpunkt der Code-Ausführung. Der Durchschnittsstrom lässt sich ebenfalls berechnen. Es ist auch möglich, IRQ-Pinpointing (Interrupt Request) zu aktivieren, was eine Auflistung verschiedener IRQs in unterschiedlichen Farben zur einfacheren Identifikation ermöglicht.

Bisher war der genau Energieverbrauch eines Produkts bis zum Ende des Entwicklungszyklus ungewiss. Zu diesem Zeitpunkt ist jedoch die zeitliche Optimierung des Codes für mehr Energieeffizienz kaum noch möglich. Im Gegenzug mussten Entwickler Batterien überdimensionieren, was die Produktgröße, Kosten und Komplexität erhöhte. Mit Energie-Debugging lassen sich Stromfresser früh und genau aufdecken, ohne die Entwicklungsdauer zu verlängern.

Rasmus Christian Larsen

: Support and Training Manager bei Energy Micro in Oslo, Norwegen

(lei)

Sie möchten gerne weiterlesen?