Suchen

Power Debugging Visualisierung des Energieverbrauchs von Embedded Systemen

| Autor / Redakteur: Lotta Frimansson, Anders Lundgren * / Franz Graser

Die Software hat einen maßgeblichen Anteil am Energieverbrauch eines Embedded Systems. Mit Power Debugging lässt sich der von der Software verursachte Energieverbrauch analysieren und optimieren.

Firmen zum Thema

Die Power Debugging-Technik ermöglicht es Entwicklern, den Ablauf und Code einer Anwendung in Bezug auf den Energieverbrauch zu analysieren. Darauf aufbauend lässt sich der Quellcode so synchronisieren und optimieren, dass die Energieanforderungen so gering wie möglich sind.
Die Power Debugging-Technik ermöglicht es Entwicklern, den Ablauf und Code einer Anwendung in Bezug auf den Energieverbrauch zu analysieren. Darauf aufbauend lässt sich der Quellcode so synchronisieren und optimieren, dass die Energieanforderungen so gering wie möglich sind.
(Bild: IAR Systems)

Die Technik des Power Debugging basiert auf der Messung des Stromverbrauchs während des Programmablaufs und der Zuordnung der Werte zum aktuellen Ablauf der Programmbefehle und dem Quellcode.

Eine der Herausforderungen ist es, den Verlauf des Stromverbrauchs exakt genug zu messen. Ideal wäre es, Messungen im Systemtakt des Embedded Systems vorzunehmen. Aber die Dämpfung des Verlaufs durch Kondensatorwirkungen in der Stromversorgung verschiebt die Messwerte im zeitlichen Verhältnis zum faktischen Verbrauch der CPU und der Peripheriegeräte.

Diese Betrachtung ist für die Praxis irrelevant, da es wichtiger ist, Stromverbrauch in Relation zum Quellcode und seinen Abläufen zu setzen als zu den Instruktionen der Maschinensprache. Damit wird ein weit geringer aufgelöster Messwertverlauf benötigt als bei einer Messung pro Maschinenbefehl.

Der IAR C-SPY-Debugger visualisiert den Energieverbrauch in mehreren Ansichten statisch und dynamisch und erlaubt es so, die Stromaufnahme einer Anwendung nachzuvollziehen und zu debuggen. Die Leistung wird mit Hilfe der In-Circuit Debugging Probe I-scope von IAR Systems gemessen, die den Spannungsabfall in einem kleinen Widerstand aufnimmt, der zwischen Stromversorgung und System geschaltet ist.

I-scope wird an die Debug Probe I-jet von IAR Systems angeschlossen (siehe Grafik). Der Spannungsabfall wird in einem Differentialverstärker gemessen und mit einem Analog-Digital-Wandler in einen Zahlenwert umgesetzt. So ist es möglich, den Strom an jeder gewünschten Stelle des Boards zu messen.

Ideal wäre eine komplette Verfolgung des Instruktionsablaufs, beispielsweise bei ARM-Systemen mit ETM-Unterstützung. Allerdings werden dazu ein spezieller Messabtaster und ETM-Support im System selbst benötigt.

Das Prinzip der Leistungsmessung mit dem I-Jet und dem C-SPY-Debugger
Das Prinzip der Leistungsmessung mit dem I-Jet und dem C-SPY-Debugger
(Bild: IAR Systems)

Weniger genau, aber mit immer noch guter Korrelation ist die Nutzung der Abtastmöglichkeiten des Program Counters (PC) in den ARM Cortex-M3/M4-Prozessoren. Das DWT (Data Watchpoint and Trace)-Modul implementiert den PC-Sampler und dokumentiert den Programmablauf bis zu 50.000-mal pro Sekunde. Es gibt dann mit einem Zeitstempel versehene ITM (Instrumentation Trace Macrocell)-Pakete aus.

Die ITM-Einheit formatiert die vom DWT-Modul ausgegebenen Programmereignisse. Sie gibt Pakete aus, die ein Programmereignis und den zugehörigen Zeitstempel enthalten. Die Debug-Probe misst die Stromaufnahme des Systems mit einem A/D-Wandler und versieht die Stromsamples ebenfalls mit einem Zeitstempel. Gleicht man die Zeitstempel beider Quellen miteinander ab, so ist es möglich, Stromaufnahme und Programmereignisse auf einer Zeitachse in Beziehung zu setzen – ähnlich wie in Interrupt-Logs und Variablenplots. So wird der aufgenommene Strom mit dem Quellcode verknüpft.

Power Debugging mit C-SPY von IAR Systems

Das Debug-Modul des Cortex-M3/M4
Das Debug-Modul des Cortex-M3/M4
(Bild: IAR Systems)

Power Debugging basiert also auf der Messung der Leistungsaufnahme und der Verknüpfung jeder einzelnen Messung mit der entsprechenden Stelle des Quellcode. In der IAR Embedded Workbench lassen sich die Leistungsmesswerte in verschiedenen Darstellungen anzeigen. Das Power Log-Fenster zeigt alle Messwerte an. So lassen sich Spitzen in der Leistungsaufnahme finden. Mit Hilfe der Verknüpfung zum ausgeführten Quellcode ist es möglich, im Power Log-Fenster auf einen Wert doppelzuklicken, um die entsprechende Stelle des Quellcode zu finden. Je nach Messfrequenz ist die Verknüpfung unterschiedlich genau, aber es ist sehr wahrscheinlich, so die Codesequenz zu finden, die die Spannungsspitze verursacht hat.

Eine andere Darstellung der Leistungsmesswerte findet sich im Timeline-Fenster. Hier werden die Leistungsmesswerte auf einer Zeitachse angezeigt, gemeinsam mit Interrupt-Aktivitäten und bis zu vier frei wählbaren Variablen der Anwendung.

Code-Verfolgung: Das Timeline-Fenster zeigt den jeweiligen Stromverbrauch bei der Codeausführung an.
Code-Verfolgung: Das Timeline-Fenster zeigt den jeweiligen Stromverbrauch bei der Codeausführung an.
(Bild: IAR Systems)

In Embedded Systemen haben Peripherieeinheiten oft einen großen Anteil am Stromverbrauch. Ihre Nutzung wird über die Software gesteuert, unabhängig davon, ob sie im Microcontroller integriert sind oder nicht. Variablen stehen oft in Zusammenhang mit der Nutzung einer bestimmten Peripherieeinheit. So lässt sich im Timeline-Fenster die Leistungsaufnahme in Relation mit Funktionsaufrufen und Aktivitäten der Peripherieeinheiten – die wiederum die Leistungsaufnahme der Schaltung erhöhen – verfolgen. Damit lässt sich der Code in Bezug auf den Stromverbrauch optimieren. Zudem sind Timeline- und Power Log-Fenster miteinander und mit dem Quellcode-Fenster verknüpft. So ist die Stelle des Quellcodes, die mit den Werten der Zeitachse korreliert, jederzeit über einen Doppelklick erreichbar.

(ID:39444320)