Elektroniknet Logo

Debugger für ARM-Cortex-M-Controller

Optimiert durch Energy Profiling


Fortsetzung des Artikels von Teil 1

Konfiguration des Debuggers

PowerView ist die Benutzer-Oberfläche, die alle Funktionen zur Konfiguration des Debugger und zur Anzeige der Ergebnisse bereitstellt. Die Einstellungen können sowohl grafisch über die jeweiligen Dialoge als auch per Befehlszeile vorgenommen werden. Bei umfangreichen Einstellungen können alle Kommandoeingaben in einem Script File abgespeichert und so auf bequeme Weise wiederholt ausgeführt werden.

Das Energy Profiling erfordert nur einige wenige Einstellungen. Dabei müssen Debug- und Trace-Schnittstelle von Prozessor und Debugger aufeinander eingestellt und die Analog-Probe konfiguriert werden. Voraussetzung für alles Weitere ist ein funktionierender Debug-Kanal. Hier müssen µTrace und Prozessor über die gleiche Schnittstelle JTAG/cJTAG/SWD miteinander kommunizieren.

Im zweiten Schritt werden dann die Trace-Funktionen konfiguriert. Beim ARM-Cortex-M sind es Embedded Trace Macrocell (ETM), Instrumentation Trace Macrocell (ITM) und Trace Port Unit Inferface (TPUI), die Inhalt der Trace-Daten und Portbreite definieren. Die Konfiguration der Makros erlaubt, dass Programm- und Daten-Trace inklusive Zeitstempel ausgegeben werden können. Bei einer begrenzten Trace-Port-Breite, die bei dieser Prozessorarchitektur mit maximal 4 bit gegeben ist, sollten Inhalt und Menge der Trace-Daten der verfügbaren Bandbreite angepasst sein. Für eine genaue Korrelation sollte der Programm-Trace möglichst ausführlich sein.

Konfiguration der Analog-Probe.
Bild 2. Konfiguration der Analog-Probe: Hier muss der Wert des Shunt-Widerstands eingegeben werden. Mit den Trigger-Einstellungen kann die Nutzung des Speichers optimiert werden.
© Lauterbach

Die Datenerfassung mit der Analog-Probe wird gemäß Bild 2 über ein separates Menü konfiguriert, in dem die Strom- und Spannungskanäle aktiviert sowie die Werte der Shunt-Widerstände eingegeben werden. Weiterhin kann für jeden Kanal mit dedizierten Trigger-Einstellungen die Ausnutzung des verfügbaren Speichers optimiert werden. Ebenso können an dieser Stelle drei Leistungskanäle aktiviert werden, deren Werte sich allerdings nicht durch Messung, sondern durch Berechnung aus den Werten der zugehörigen Strom- und Spannungskanäle ergeben. In diese Rechnung geht zur Ermittlung des Stromes der Wert des Shunt-Widerstandes mit ein. Vereinfachend kann für einen Leistungskanal die Spannung als konstant angenommen werden, was die Anforderungen an das Messsystem vereinfacht, aber auch die Genauigkeit der Leistungsberechnung reduziert. Damit sind alle notwendigen Vorbereitungen getroffen. Über den Debugger kann mit dem Start der Ausführung der Applikation oder durch definierte Triggerbedingungen die Aufzeichnung von Trace und Messwerten gestartet werden.

Korrelation der Messwerte in PowerView

Während die Strom- und Spannungswerte kontinuierlich und äquidistant eingelesen werden, erfolgt die Übertragung der Trace-Daten komprimiert in Paketen, versehen mit einem Zeitstempel des Target. Nach Entpacken der Trace-Daten werden beide Messreihen mit Hilfe der µTrace-internen Systemuhr auf eine gemeinsame Zeitachse umgerechnet und so jedem Verbrauchswert eine Position im zeitlichen Ablauf der Applikation zugeordnet. Diese Transformation der Zeitachsen beider Messreihen stellt als Bindeglied den Bezug zu den High-Level-Language-Quelldateien (HLL) her.

Darstellung der Ergebnisse mit PowerView.
Bild 3. Darstellung der Ergebnisse mit PowerView. Der obere Teil zeigt den Aufruf der Funktionen. In der Mitte ist der Strom am externen Speicher zu sehen und unten der Versorgungsstrom des Core.
© Lauterbach

Die aufgezeichneten Trace-Daten und Messwerte können in unterschiedlicher Form als alphanumerische Auflistung und grafisch als Chart zeitlich korreliert in einzelnen Fenstern der Benutzeroberfläche dargestellt werden. Bild 3 zeigt das Ergebnis einer Messung, bei der die durch Benutzung von externem Speicher verursachte Energie-Aufnahme untersucht wird. Während in diesem Beispiel eine Schleife mehrmals nacheinander ausgeführt und dabei abwechselnd der Cache aktiviert und deaktiviert wird, wird der Versorgungsstrom von Speicher-Interface und Core gemessen. Das obere Fenster von Bild 3 zeigt im Diagramm die Laufzeit der verschachtelt aufgerufenen Funktionen. In dieser Anzeige wird die kürzere Laufzeit der schnelleren Zugriffe aufgrund des aktivierten Cache deutlich. Das Diagramm in der Mitte zeigt den Stromverlauf an der Speicherschnittstelle. Die höheren Stromwerte werden durch den Zugriff auf den externen Speicher im zweiten Durchlauf bei deaktiviertem Cache und vor dem dritten Durchlauf beim Nachladen des Cache verursacht. Die Verwendung des Cache wird auch am Versorgungsstrom des Core sichtbar, dessen Zeitverlauf im unteren Fenster zu sehen ist. Die Zeitbereiche der einzelnen Fenster sind miteinander synchronisiert. Eine Änderung des Zeitbereichs des einen Fensters geschieht synchron auch bei den anderen Fenstern. So ist es auf einfache Art möglich, einzelne Strom- und Spannungswerte den entsprechenden Phasen der Applikation zuzuordnen.

Aus den Messwerten können jedoch noch weitere Informationen berechnet oder statistisch abgeleitet und dargestellt werden. Dazu gehört die Berechnung der Verbrauchswerte der Leistungskanäle, die Ermittlung von Minimal- und Maximalwerten und die funktionsbezogene Zuordnung des anteiligen Verbrauchs. Abschließend können alle aufgezeichneten Daten in Dateien gespeichert, später wieder geladen und mit dem Simulator auch offline analysiert werden.

Mit dem µTrace, der Analog-Probe und dem PowerView steht ein kompaktes System zur Verbrauchsbestimmung zur Verfügung, das von jedem Entwickler bequem gehandhabt und bedient werden kann. Allerdings hat diese Methode auch ihre Grenzen.

Die Korrelation der Messwerte mit den Trace-Daten hat eine begrenzte Genauigkeit, die von den Zeitstempeln abhängt, die vom Trace-Makro ausgegeben wurden. Für eine Zuordnung auf Funktionsebene reicht das problemlos aus, für eine Zuordnung auf Befehlsebene aber nicht. Aufgrund der Befehls-Pipeline und Multicore-Architekturen werden Befehle generell parallel verarbeitet; ein Verbrauchswert kann nicht einem einzelnen Befehl zugeordnet werden. Weiterhin verursacht die Benutzung der Trace-Schnittstelle eine erhöhte Stromaufnahme, die durch das Messsystem ebenfalls mit erfasst wird und die bei hochgradigen Optimierungen durchaus den Messwert verfälschen kann.

Trotzdem ist das Energy Profiling mit dem µTrace eine äußerst effektive Methode zur Verbrauchsoptimierung, die bei der Applikationsentwicklung, Compiler-Optimierung und der Chip-Inbetriebnahme sinnvoll eingesetzt werden kann. Im Lieferumfang des µTrace sind neben Netzteil das Debug- und USB-Kabel enthalten. Eine Reihe von Adaptern für das Debug-Kabel und die Analog-Probe sind als Zubehör erhältlich.

Der Autor:

Andreas Grimm 
arbeitet als Account Manager bei Lauterbach. Nach seinem Studium der Elektrotechnik an der Universität Kaiserslautern war er lange Zeit in den Bereichen Applikation und Marketing bei der Fujitsu Semiconductor Europe GmbH tätig.

  1. Optimiert durch Energy Profiling
  2. Konfiguration des Debuggers

Das könnte Sie auch interessieren

Verwandte Artikel

Lauterbach GmbH