Bachelorarbeit Automatisierte Energiemodellerstellung mit MSP430 EnergyTrace - of the Embedded Software Systems Group
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Bachelorarbeit Automatisierte Energiemodellerstellung mit MSP430 EnergyTrace Lennart Nicolas Kaiser 23. September 2020 Betreuer Daniel Friesel, M.Sc. Prof. Dr. Olaf Spinczyk Universität Osnabrück Institut für Informatik Arbeitsgruppe Eingebettete Softwaresysteme https://ess.cs.uos.de/
Zusammenfassung Im Rahmen dieser Bachelorarbeit wurden die Möglichkeiten untersucht mit günstiger Hardware möglichst akkurate Energiemodelle zu erstellen. Bestehende Lösungen zur Er- stellung von Energiemodellen beruhen meistens auf selbst entworfener Hardware oder auf teuren Energiemessgeräten. In dieser Arbeit wurde das MSP430FR5994 LaunchPad von Texas Instruments verwendet. Dieses LaunchPad hat EnergyTrace verbaut, eine ex- tra Einheit vor dem Prozessor, die die Energie misst. In dieser Arbeit wurde die Schnitt- stelle zur Synchronisierung der Energiedaten implementiert. Aus den synchronisierten Daten wird die durchschnittliche Leistungsaufnahme der Zustände und Transitionen bestimmt. Im Anschluss wurde geprüft wie die Qualität der erstellten Modelle ist. Der Modellfehler liegt im Mittel der geprüften Zustände bei 8% und im Maximum bei 500 µW . Wobei der absolute Fehler in Zuständen mit geringerem Energieverbrauch stärker ins Gewicht fällt. Abstract In this Bachelor thesis, the creation of accurate energy models using inexpensive hard- ware was researched. Existing solutions for creating energy models are mostly based on self-designed hardware or on expensive energy measuring devices. MSP430FR5994 LaunchPad, produced by Texas Instruments, was used for the purpose of this thesis. Energy usage is measured by the built-in EnergyTrace unit; this is an additional unit attached in front of the actual processor. In this thesis the interface for the energy data synchronization was implemented. Subsequently the average power consumption of each state and transition is calculated with the synchronization and EnergyTrace data. Afterwards the quality of the created models was checked. The model error is 8% on average for the tested conditions and a maximum of 500µW with the tested benchmarks. The absolute error is greater in states with lower energy consumption.
Inhaltsverzeichnis 1. Einleitung 1 2. Grundlagen 3 2.1. Energie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2. Energiemodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3. dfatool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4. MSP430 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4.2. MSP430 EnergyTrace++ . . . . . . . . . . . . . . . . . . . . . . 8 2.5. Logic Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.6. Keysight N6785A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3. Literatur 11 3.1. MIMOSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2. FlockLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3. PowerBench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.4. SPOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4. Konzept 15 4.1. Logic Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.2. UART / Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.3. Barcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.4. Synchronisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5. Implementierung 19 5.1. Benchmarkerstellung mit dfatool . . . . . . . . . . . . . . . . . . . . . . 19 5.2. Sigrok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.3. Synchronisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.4. Einbindung Auswertung in dfatool . . . . . . . . . . . . . . . . . . . . . 24 5.5. Algorithmen zur Genauigkeitsverbesserung . . . . . . . . . . . . . . . . 25 6. Evaluation 27 6.1. EnergyTrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.2. Versuchsaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.3. Benchmarkerstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.4. Synchronisierung mit Logic Analyzer (Zustände) . . . . . . . . . . . . . 32 6.5. Synchronisierung von Transitionen . . . . . . . . . . . . . . . . . . . . . 34 6.6. Vergleich mit anderen LaunchPads . . . . . . . . . . . . . . . . . . . . . 35 6.7. Kürzere Benchmarkdauer . . . . . . . . . . . . . . . . . . . . . . . . . . 36 i
Inhaltsverzeichnis 6.8. Synchronisierung mit UART/Timer . . . . . . . . . . . . . . . . . . . . 37 6.9. Algorithmen zur Genauigkeitsverbesserung . . . . . . . . . . . . . . . . 37 6.10. Vergleich von Umwelteinflüssen . . . . . . . . . . . . . . . . . . . . . . . 39 6.11. Vergleich mit einer MIMOSA Messung des BME680 . . . . . . . . . . . 40 6.12. Zusammenfassung der Evaluationsergebnisse . . . . . . . . . . . . . . . . 41 7. Zusammenfassung 43 7.1. Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.2. Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 A. Anhang 45 A.1. Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 A.2. Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Literaturverzeichnis 49 Abkürzungsverzeichnis 51 Abbildungsverzeichnis 53 Tabellenverzeichnis 55 ii
1. Einleitung Eingebettete Systeme sind heutzutage in unserem Alltag überall vertreten. Bei einem Großteil dieser eingebetteten Systeme werden zur Energieversorgung Akkus oder Bat- terien verwendet. Beispiele dafür sind Smartphones, Fernbedienungen oder Außensenso- ren von Wetterstationen. Ein Laden des Akkus beziehungsweise Austausch der Batterien wird zu einem Zeitpunkt notwendig sein, auch wenn in einigen Fällen Energy-Harvesting für die Energieversorgung verwendet wird. Um die Laufzeit des Systems zu maximieren und diese zu bestimmen, sind Informationen über die im System verfügbare und be- nötigte Energie notwendig. Um Informationen über die benötigte Energie zu erhalten, bieten sich Energiemodelle an, die die energierelevanten Aktionen des Systems model- lieren. Die notwendigen Daten für solche Modelle sind nicht immer vollständig in den Datenblättern der Peripherie dokumentiert. Oft sind grobe Aktionen vermerkt, Kombi- nationen dieser Aktionen meistens nicht. Deshalb werden diese Energiemodelle mithilfe von Messungen und Handarbeit erstellt. Die dazu benötigten professionellen Energie- messgeräte sind oft sehr teuer und nicht zur automatisierten Energiemodellerstellung konzipiert worden. Ziel dieser Bachelorarbeit ist die automatische Erstellung von Energiemodellen mit- hilfe von günstiger COTS(engl. Commercial off-the-shelf, fertig kaufbar) Hardware wie dem Mikrocontroller MSP430 und einem USB Logic Analyzer. Im Rahmen dieser Ar- beit werden verschiedene Synchronisierungskonzepte weiterentwickelt und implemen- tiert. Diese Synchronisierungsverfahren sind in der Lage, den gemessenen Energiewerten den Zuständen und Transitionen zuzuordnen. Mithilfe dieser Daten und dfatool, einer Benchmarksoftware, können im Anschluss Energiemodelle erstellt werden. Es wurden zwei Synchronisierungsverfahren implementiert, die unterschiedliche Hard- warevoraussetzungen haben. Die erste Variante basiert auf der Kommunikation mit dem Mikrocontroller MSP430 und Logic Analyzer über einen IO-Pin, über den transferiert wird, ob sich der Mikrocontroller in einer Transition oder einem Zustand befindet. Die zweite Variante nutzt ausschließlich einen interner Timer von MSP430, welcher die Dauer der Transitionen bzw. Zustände misst und diese per UART an den Computer weitergibt. Im Anschluss werden diese Synchronisierungsverfahren nach verschiedenen Aspek- ten bewertet. Es wird die Genauigkeit der erstellten Energiemodelle, die Messbarkeit von Transitionen und die Auswirkungen von Umwelteinflüssen untersucht. Dazu wer- den Benchmarks (Programme für Vergleichsmaßstäbe), die mithilfe von dfatool und Graphenbeschreibungen generiert wurden, verwendet. Diese werden analysiert und mit errechneten Sollwerten oder Daten aus anderen Messreihen verglichen. Neben der Evaluation des entstandenen Modells wurde außerdem untersucht, wie ge- nau EnergyTrace arbeitet, da diese Daten als Grundlage für die Energiemodellerstellung dienen. 1
Einleitung Im Folgenden werden in Kapitel 2 zunächst die relevanten Grundlagen, insbesondere in Bezug auf die verwendete Hard- und Software, geschaffen. Im anschließenden Kapitel 3 wird ein Überblick über schon bestehende Arbeiten in diesem Themengebiet gegeben. In Kapitel 4 wird das entworfene Konzept für die in Kapitel 5 gezeigte Implementierung der beiden Ansätze vorgestellt. Eine Auswertung der Messergebnisse und der Funktionalität findet in Kapitel 6 statt. Zuletzt werden die Ergebnisse in Kapitel 7 zusammengefasst und ein Fazit gezogen. 2
2. Grundlagen In diesem Kapitel werden die Grundlagen für die Messungen und Modellierung von Energie und Leistung dargestellt. Des Weiteren werden die verwendeten Hard- und Softwarekomponenten kurz vorgestellt. So werden zunächst die elektrischen Grundlagen erläutert, im Anschluss in Abschnitt 2.2 eine Einführung in Energiemodelle gegeben. Zudem wird die verwendete Hard- und Software vorgestellt, in Abschnitt 2.4 der Mi- krocontroller MSP430 mit EnergyTrace und in Abschnitt 2.5 der zur Synchronisierung verwendete Logic Analyzer. 2.1. Energie Um feststellen zu können, wie aussagekräftig die erstellten Energiemodelle sind, wer- den diese mit realen Messergebnissen bzw. Sollwerten verglichen. Für das Verständnis, wie die Messungen in dieser Arbeit gestaltet wurden, folgt eine grobe Übersicht der elektrotechnischen Zusammenhänge. Zunächst wird der Begriff der elektrischen Leistung erläutert. Leistung P ist ein Pro- dukt aus Spannung U und Strom I, bzw. ein Quotient aus Energie E und Zeit t. P =U ·I Energie ist eine fundamentale Größe in der Elektrotechnik und wird in der SI-Einheit Joule angegeben. Im klassischen Sprachgebrauch wird Energie verbraucht, physikalisch korrekt betrachtet wird sie nur umgewandelt, zum Beispiel in Wärme. Ein klassischer Energiewandler ist ein Elektromotor. Dieser wandelt elektrische Energie in kinetische Energie(Bewegungsenergie) um. Besitzt der Elektromotor eine Leistung von 100 W und wird zehn Sekunden in Betrieb genommen, werden 1000 J Energie verbraucht. Um die verbrauchte Energie zu berechnen, wird zwangsläufig die Zeit benötigt. Bei den meisten Verbrauchern verändert sich die Leistung mit der Zeit. Wird die Leistung als Funktion P (t) beschrieben und der Zeitraum von t1 bis t2 betrachtet, gilt Z t2 E= P (t)dt t1 für die umgesetzte Energie in diesem Zeitraum. Bei konstanter Leistung vereinfacht sich die Formel zu E =P ·t Die meisten Messgeräte können nur die Spannung messen, weshalb ein Messwider- stand(engl. Shunt) genutzt werden muss, um die Energie zu messen. Dieser wird mit dem Verbraucher in Reihe geschaltet. Denn nach dem ohmschen Gesetz erzeugt der Strom- fluss durch den Widerstand einen proportionalen Spannungsabfall. Der Messwiderstand 3
Grundlagen 2.2 muss passend gewählt werden, da die Spannung am DUT(Verbraucher, engl. Device Under Test) verändert wird, sodass diese je nach Widerstand unter der Versorgungs- pannung liegen kann. Diese Spannung kann mit einem Analog-Digital-Wandler gemessen und daraus die verbrauchte Energie berechnet werden. Mit dieser Art der Messung kön- nen nur diskret Messwerte erfasst werden, dass heißt, wenn einzelne Peaks(Spitzen) im Stromverbrauch zwischen den Messungen des Analog-Digital-Wandlers liegen, werden sie nicht erfasst. Bei Funktionsaufrufen, die nur wenige Mikrosekunden lang sein können, ist es wahrscheinlich, diese nicht zu erfassen. Durch einen Analog-Digital-Wandler wird nicht nur die Spannung, sondern auch die Zeit diskretisiert. Ein Analog-Digital-Wandler, kurz ADC(engl. analog-to-digital converter), wandelt eine analoge Spannung in ein digitales Signal um. Dieses kann in einem Mikrocontrol- ler oder in einem Messgerät weiterverarbeitet werden. Mit einem 10-bit ADC können bspw. nur 210 = 1024 verschiedene Spannungswerte gemessen werden. Wenn diese Wer- te auf einen Bereich von 0 bis 5 Volt angewendet werden, entspricht ein ADC-Schritt 5V /1023 ≈ 0,00489V = 4,89mV . Zusätzlich besteht die Möglichkeit mit einer Kondensatorschaltung aus zwei Kon- densatoren eine integrative Messung zu erstellen. Dazu wird immer abwechselnd ein Kondensator geladen, währenddessen der andere die Stromversorgung der DUTs sicher- stellt. Wenn der Kondensator unter eine bestimmte Spannungsgrenze fällt, werden die Rollen der Kondensatoren gewechselt. Diese Wechsel werden intern gezählt und daraus die verbrauchte Energie bestimmt. Da die Kondensatoren komplett analoge, bzw. in- tegrative Bauteile sind, können bei dieser Schaltung Peaks nicht verloren gehen. Diese Technik wird auch bei MSP430 EnergyTrace verwendet. Bei einem Teil der Auswertung wird auf eine Widerstandsschaltung zurückgegriffen, um händisch den Sollwert zu bestimmen. Mit I = UR und P = U ·I lässt sich der Sollwert der Messung errechnen, was sich bei anderen DUTs schwieriger gestaltet. Fertigungs- toleranzen zu Vergleichsmessungen sind auszuschließen, da die Widerstände vorher mit einem Multimeter vermessen werden können. Zum Beispiel ist bei einer Spannung von 3,3V und einem 100Ω Widerstand ist die Stromstärke I = 0,033A bzw. 33mA. Daraus folgt, dass P = 3,3V · 0,033A = 108,9mW . 2.2. Energiemodelle Energiemodelle sind eine Art von Ressourcenmodellen. Diese existieren bereits z.B. für die Verwendung des Stacks. Die Stackressourcen werden aber nach einer gewissen Zeit wieder frei und können neu verwendet werden. In der Energiemodellierung hingegen werden die Energieressourcen endgültig verbraucht und können nicht wiederverwendet werden. 4
2.3 Grundlagen Abbildung 2.1.: Energiemodell eines RF Sende- und Empfangsmoduls. [1] Energiemodelle werden zur Prognose und Berechnung des Energieverbrauchs ver- wendet. Grundsätzlich wird zwischen der Online- und der Offlinemodellierung unter- schieden. Bei der Onlinemodellierung wird zeitgleich mit der Ausführung des Systems gemessen und dieses kann dynamisch auf Veränderungen reagieren. Die Offlinemodel- lierung wird mithilfe von externer Hardware vorgenommen. Der Zugriff auf die Daten des Prozessors ist dabei nur beschränkt möglich. Die im Folgenden verwendeten Mo- delle sind Offlinemodelle, da der verwendete Mikrocontroller eine getrennte Einheit zur Energiemessung besitzt. Außerdem werden die Modelle nicht während einer norma- len Programmausführung auf dem Mikrocontroller erstellt, sondern mit extra Bench- marks. Allgemein ist die Erstellung von Benchmarks händisch möglich, aber sehr auf- wändig. Es ist möglich, die Energiemodellierung bis auf die Instruktionsebene von MCUs (Microcontroller Unit) herunterzubrechen oder jeden Bitwechsel einzeln zu modellie- ren. Solche Messungen sind aber mit enormem Aufwand verbunden. Hersteller geben meistens nur grob an, in welchen Hardwarezuständen wie viel Energie durchschnittlich verbraucht wird. Hardwarezustände können zum Beispiel der Mess- oder Idlezustand eines Sensors sein. In diesen Zuständen werden verschiedene Ressourcen, wie CPU Zeit und Energie benötigt. [3] Ein häufig verwendetes Modell ist der Priced Timed Automaton, kurz PTA. Ein PTA ist ein endlicher Automat mit annotierten Kosten und Zeiten. Endliche Automaten be- sitzen Transitionen und Zustände, sowie einen definierten Startzustand, weshalb sie sich zur Darstellung von Energiemodellen besonders eignen. Diese können auf Funk- tionsaufrufe und Hardwarezustände übertragen werden. Transitionen können normale Funktionsaufrufe, (Hardware-)Interrupts oder zeitgesteuerte Transitionen sein. In Ab- bildung 2.1 ist ein PTA für einen Funkchip mit den Zuständen IDLE, SLEEP, RX und TX dargestellt. Des Weiteren ist an den Transitionen des Automaten die Dauer und der Energieverbrauch vermerkt. Bis eine Transition auftritt, verweilt der Automat in dem aktuellen Zustand. Der Zustand TX ist zeitgesteuert, d.h. nach einer gewissen Zeit wechselt der Automat zurück in den IDLE Zustand. Deshalb ist in Zuständen nur die Leistung angemerkt, die in diesem Zustand benötigt wird. Die verbrauchte Energie ergibt sich aus der Dauer des Zustandes und der angegebenen Leistung. [1] 5
Grundlagen 2.4 Abbildung 2.2.: MSP430FR5994 LaunchPad Development Kit. [6] 2.3. dfatool dfatool[4] ist ein im Rahmen der Masterarbeit von Daniel Friesel entstandenes Tool, mit- hilfe dessen Benchmarks generiert und ausgewertet werden können. Anhand von Hard- warebeschreibungen in Graphenform von Sensoren oder anderen Verbrauchern können systematisch Ausführungsreihenfolgen erstellt werden. Diese werden auf den Mikrocon- troller geflasht und danach Peripherie wie das Energiemessgerät MIMOSA angesteuert, um den Energiebedarf zu messen. Am Ende des Prozesses werden die Dateien in einem Archiv gespeichert und können analysiert werden. Bei der Analyse werden sowohl Zu- stände als auch Transitionen und deren Parameterzusammenhang mit den aufgerufenen Funktionen untersucht. 2.4. MSP430 MSP430 ist eine 16-Bit-RISC-Mikrocontroller Familie von Texas Instruments (kurz TI ). Die erste Version ist Anfang der 1990er Jahre in Deutschland entwickelt worden. Der Mi- krocontroller ist auf geringen Stromverbrauch optimiert und dementsprechend gut für akku- und batteriebetriebene Low-Power-Systeme geeignet. Des Weiteren unterstützt er verschiedene Low-Power-Modi. Der Prozessor ist mit persistentem Hauptspeicher, der von TI als FRAM bezeichnet wird, erhältlich. Die Familie wird fortlaufend um neue Versionen des Prozessors erweitert. Die LaunchPad Varianten des Prozessors bie- ten Interaktionsmöglichkeiten sowie ausgeführte IO-Pins. Für die LaunchPad Versionen gibt es BoosterPacks. Diese werden auf die IO Pins aufgesteckt und können weitere Features, wie Sensoren bzw. Aktoren bereitstellen. Ein Beispiel dafür ist das Infrarot (IR) BoosterPack-Modul oder, für die Energieversorgung, ein Kraftstofftank/Batterie- BoosterPack-Modul. [6] 6
2.4 Grundlagen Abbildung 2.3.: Schematische Darstellung: MSP430FR5994 LaunchPad Development Kit. [6] 2.4.1. Hardware Im Rahmen dieser Bachelorarbeit wird das MSP430FR5994 LaunchPad Development Kit, kurz MSP430, verwendet (s. Abbildung 2.2). Der MSP430FR5994 ist ein 16 MHz MCU mit 256KB FRAM, 8KB SRAM, 12-bit ADC, UART/SPI/I2C, Timer und di- versen IO Pins. Schematisch ist der MCU in Abbildung 2.3 aufgezeigt. Im folgenden Abschnitt werden die einzelnen Komponenten erläutert. Das LaunchPad wird standardmäßig über den microUSB Port, via eZ-FET, mit Ener- gie versorgt. Die auf dem Board verfügbare Programmier- und Debug-Schnittstelle wird von TI als eZ-FET bezeichnet. Mit einer geeigneten Jumperkonfiguration lässt sich an- statt dessen eine externe Energiequelle verwenden. Das ist bei der Verwendung von externen Messgeräten sinnvoll. Über den gleichen microUSB Port wird sowohl die Kom- munikation von MSP430 EnergyTrace++ bzw. eZ-FET, als auch die des Mikrocontrol- lers direkt geregelt. Das LaunchPad besitzt zusätzlich einen Super-Cap. Dabei handelt es sich um einen Kondensator mit einer Kapazität von 0,22F , welcher nach dem Aufladen das Board mit Strom versorgen kann. Getrennt vom MCU/MSP430 befindet sich der eZ-FET, dieser stellt die Programmier- , Debugging- und Evaluationsschnittstelle zum MSP430 bereit. Optisch ist dieser, wie in Abbildung 2.2 sichtbar, durch eine gestrichelte Linie getrennt. Hier lassen sich per Jumperkonfiguration einzelne Kommunikationswege blockieren, wie beispielsweise Spy- bi-Wire, ein JTAG-Protokoll von Texas Instruments, welches statt 4 nur 2 Pins benö- tigt, als auch die normale serielle Kommunikation (RXD/TXD), wie sie z.B. für UART verwendet wird. Auch die Stromversorgung über eZ-FET kann komplett deaktiviert werden, sodass die Einheit vollständig isoliert werden kann. Zusätzlich befindet sich in 7
Grundlagen 2.4 dem gestrichelten Bereich das MSP430 EnergyTrace++ Modul, das zur Energiemessung notwendig ist. Im unteren Teil des LaunchPads liegt der Prozessor MSP430FR5994 mit zwei Push- buttons (S1 und S2) und jeweils eine rote und grüne LED. Diese sind durch den Benutzer frei programmierbar und werden in dieser Arbeit zur Synchronisierung des Energiebe- darfs benötigt. Des Weiteren werden die IO-Ports links und rechts vom MSP430FR5994 zur Kommunikation mit dem DUT verwendet. Die Buttons, der microSD-Kartenslot sowie der Super-Cap werden nicht genutzt. 2.4.2. MSP430 EnergyTrace++ MSP430 EnergyTrace++ ist eine von Texas Instruments entwickelte Technologie zur Energiemessung des angeschlossenen Boards und der Peripherie. Diese ist auf verschie- denen Development Boards neben dem eZ-FET verbaut. Ursprünglich wurde EnergyTrace entwickelt, um den reinen Stromverbrauch zu er- mitteln und Programmierern Code-Analyse hinsichtlich der Energieeffizienz zu erleich- tern. Die neueren Versionen EnergyTrace+ und EnergyTrace++, letzteres verbaut im MSP430FR5994 LaunchPad, können zusätzlich zur Strommessung den Prozessor-, sowie den Systemstatus übermitteln. Im Prozessorstatus ist zusätzlich vermerkt, ob das Gerät aktiv ist oder sich in einem Low-Power-Zustand befindet. Im Systemstatus ist festge- halten, welche Peripheriegeräte und System-Clocks aktiv sind. Mithilfe der TI Software Ultra-Low-Power (ULP) Advisor können Energieeffizienzprobleme erkannt werden. Aus diesen Ergebnissen können Optimierungen vorschlagen werden. Zusätzlich kann über- prüft werden, ob sich ein Peripheriegerät, wie ein Sensor, nach einer gewissen Zeit in einem Low-Power-Zustand befindet. Traditionell wird Energie mit einem Messwiderstand gemessen, wie in Abschnitt 2.1 erläutert. EnergyTrace++ verwendet eine wechselnde Kondensatorschaltung, welche in einer integrierenden Messung resultiert. Auf dieses EnergyTrace Konzept hat TI mehrere Patente angemeldet [9]. Mit einem softwaregesteuerten Gleichspannungswandler(DC- DC Converter) werden Ladungsimpulse abgegeben. Die Dauer der Impulse ist konstant, während deren Frequenz der Stromstärke entspricht. Der Debugger kann einzelne Pulse über die Zeit aufzeichnen und somit den Energieverbrauch ermitteln. Im Gegensatz zu externen Energiemessgeräten misst EnergyTrace++ zwangsläufig den Energieverbrauch des Prozessors mit. Die Messpunkte haben eine zeitliche Auflösung von ca. 3,7 kHz. [7] Gleichnamig, auch MSP430 EnergyTrace, ist ein Tool von Texas Instruments, das auf der Entwicklungsumgebung Eclipse basiert und bei längeren Messungen die Nut- zungsdauer mit bestimmten Batterien prognostizieren kann. Außerdem werden Plots erstellt welche die Leistung des LaunchPads erkennbar machen. Ein auf GitHub als Open Source veröffentlichtes Softwareprojekt1 ermöglicht, es die Daten, die über die USB Schnittstelle gesendet werden, auf ein CLI(engl. Command Line Interface) her- unterzubrechen, wodurch eine simple Dateiausgabe möglich ist. Ein Softwareprojekt 2 1 https://github.com/carrotIndustries/energytrace-util 2 https://ess.cs.uos.de/git/software/msp430-etv 8
2.5 Grundlagen bietet weitere Funktionalität. Dieses Projekt verwendet eine Debugging open-source Li- brary von TI. Um die Daten später selber mit Python weiterzuverarbeiten, wird auf das Projekt zurückgegriffen. Die Daten die vom CLI generiert werden, liegen in folgendem Format vor: #Timestamp [ us ] Current [ nA ] V o l t a g e [mV] Energy [ nJ ] 50225 0 3291 41000 50504 0 3291 41000 50717 0 3291 41300 50929 0 3291 41300 51143 0 3291 41700 Listing 2.1: Auszug aus einer .etlog Datei 2.5. Logic Analyzer Abbildung 2.4.: SALEAE-kompatibler Logic Analyzer. Ein Logikanalysator (engl. Logic Analyzer) kann an einem oder mehreren Eingängen die Spannung messen und daraus den logischen Wert ermitteln. Diese Daten werden digital per USB weitergegeben und können grafisch dargestellt werden. Im Gegensatz zu Oszilloskopen haben diese meist deutlich mehr Eingänge, die jedoch nur digital messen können. Das heißt, nur diskrete Werte wie falsch(0 ) oder wahr(1 ) werden gemessen. Teilweise gibt es weitere Bereiche, wie undefiniert, je nach verwendetem Logikgatter. Mit entsprechender Software, wie PulseView, lassen sich ganze Kommunikationswege überprüfen, mitlesen bzw. entschlüsseln. Bei PulseView handelt es sich um eine Software mit grafischer Benutzeroberfläche. PulseView basiert auf sigrok, einem freien, portablen und quelloffenen Programmpaket, welches verschiedenste Gerätetypen unterstützt.3 sigrok-cli ist ein CLI für die Verwendung des Logic Analyzers. libsigrok ist eine in C programmierte shared library. Eine Nutzung dieser Bibliothek durch andere Program- miersprachen wird beispielsweise durch Java oder Python Bindings ermöglicht. 3 https://www.sigrok.org 9
Grundlagen 2.6 SALEAE ist ein großer Hersteller von Logic Analyzern und deren Software. In der folgenden Implementation wird ein SALEAE-kompatiblen Logic Analyzer verwendet, siehe Abbildung 2.4. Dieser unterstützt eine Samplingfrequenz bis zu 24 MHz, besitzt 8 digitale Eingänge und wird per Mini-USB an den Computer angeschlossen. 2.6. Keysight N6785A In einem Teil der Evaluation wird auf das professionelle Energiemessgerät N6785A von Keysight zurückgegriffen, mithilfe dessen die Genauigkeit der von EnergyTrace gemessen Daten überprüft wird. Dies ist ein Modul, welches für die Analyse von Batterieentladung konzipiert wurde. Es besitzt einen programmierbaren Ausgangswiderstand. Zusätzlich kann Strom bzw. Spannung gemessen werden. Die Abweichung der Strommessung beträgt 0,025 % bzw. 100 nA, die der Spannungsmessung 0,025 % bzw. 1,8 mV. Die Frequenz der Datenlog- gerfunktion liegt bei 50 kHz. Das Energiemessgerät besitzt für Messergebnisse einen in- ternen Speicher und es besteht zusätzlich die Möglichkeit, einen externen USB-Speicher mit einer Speicherkapazität bis zu 2GB anzuschließen. Dieses Modul muss in ein Mainframe des MPS (Modular Power System) der Reihe N670x eingesetzt werden. [10] 10
3. Literatur In diesem Kapitel werden einige Forschungsarbeiten als verwandte Literatur zu dem Thema dieser Bachelorarbeit vorgestellt. Es bestehen einige Ansätze und Projekte zum Thema „Automatisierte Energiemodel- lerstellung“. Unter anderem auch mit akkubasierten Systemen, wie Smartphones und Laptops, welche meist Energiemessungen für komplette Systeme und nicht für einzelne Komponenten durchführen. Des Weiteren existieren Projekte für einzelne Komponenten, wie Funkchips, die auf selbst entwickelter Hardware basieren. Einige dieser Projekte werden im Folgenden kurz vorgestellt. 3.1. MIMOSA MIMOSA (Messgerät zur integrativen Messung ohne Spannungsabfall) ist ein Mess- gerät, das 2013 an der TU Dortmund von Markus Buschhoff und Christian Günter entwickelt wurde[2]. Es wurde für hochpräzise Messungen des Energieverbrauchs von eingebetteten Systemen konzipiert und ermöglicht mit den gemessenen Daten eine prä- zise Energiemodellerstellung. MIMOSA misst mit einer 16Bit Auflösung und einem Messbereich bis 50mA. Das bedeutet, ein Energieschritt entspricht ca. 0,8µA. Die zeit- liche Auflösung liegt bei 100 kHz. Die Messung erfolgt integrativ mithilfe drei analoger Integratoren. Das bedeutet, dass der gesamte Stromverbrauch, wie bereits in Abschnitt 2.1 erläutert, vom letzten bis zum aktuellen Messpunkt aufgezeichnet wird. Der Spannungsabfall durch den Verbraucher wird durch einen Widerstand kompensiert, welches in einer konstanten Versorgungs- spannung von 3,6V resultiert. Zusätzlich existiert ein Buzzer-Eingang, mithilfe dessen Funktionsaufrufe und Zustände übermittelt werden können. In der folgenden Versuchs- anordnung entspricht der Buzzer-Eingang dem Logic Analyzer. Die Messdaten können per USB-Schnittstelle an den PC weitergegeben werden, in dem sie von libmimosa ausgewertet werden. Ein Datensatz besteht aus insgesamt 32 Bits: Messwert(28 Bits), Buzzer(1 Bit), Integratornummer(2 Bits) und ein reserviertes Bit. libmimosa kann auch die Kalibrierung des Boards vornehmen. 3.2. FlockLab FlockLab ist ein Testbed (deutsch Prüfstand), das seit 2009 an der ETH Zürich entwi- ckelt wird und 2013 erschienen ist[11]. FlockLab hat eine GPIO-Überwachung mit einer Auflösung von 10 kHz und somit bspw. Routingprotokolle überwachen. Die serielle I/O Schnittstelle kann auch verwendet werden, um ASCII Daten oder andere Nachrichten 11
Literatur 3.4 zu übermitteln. Außerdem können auch GPIO Pins durch das Testbed angesteuert wer- den. Die Versorgungsspannung des DUTs kann zwischen 1,8 V und 3,3 V in 100 mV Schritten variiert werden. Am relevantesten ist das Power profiling Feature, welches die Aufnahme des Stromverbrauchs ermöglicht. Das Testbed hat zwei Konfigurations- möglichkeiten, den high-speed oder high-resolution Modus. Im high-speed Modus ist die zeitliche Auflösung 56 kHz, im high-resolution Modus 28 kHz. Standardmäßig wird letz- teres verwendet, da das SNR(Signal-Rausch-Verhältnis) deutlich besser ist. Zur Messung wird eine Shuntwiderstandsschaltung verwendet, dementsprechend er- folgt keine integrative Messung. Der Widerstand ist klein gewählt(150mΩ), welches nur in einem geringen Spannungsunterschied resultiert, deshalb wird vor der Nutzung des ADCs das Signal proportional verstärkt. Durch diesen Widerstand können Ströme bis zu 160mA gemessen werden. Die Spannung wird mithilfe eines ADS1271 ADC Chips digitalisiert. Dieser hat eine Auflösung von 24 Bits, sodass theoretisch ein ADC-Schritt 10nA entsprechen. Die Kommunikation verläuft hier über die USB-Schnittstelle oder per Ethernet. 3.3. PowerBench PowerBench ist ebenfalls ein Testbed, dieses wurde 2008 an der Delft University of Tech- nology entwickelt[5]. PowerBench ist besonders auf Sensornetze(engl. Wireless Sensor Networks, kurz WSN ) spezialisiert. Deshalb kann gleichzeitig der Stromverbrauch von bis zu 24 Verbrauchern vermessen werden. Das heißt, es können gleichzeitig Sende- und Empfangsoperationen gemessen werden. Dieses passiert mit einer Samplingfrequenz von 5kHz und einer Auflösung von 30µA. Es sollte ein Messfehler von < 5 % erreicht werden. Gemessen wird mithilfe von Messwiderständen und ADCs. Hier wurde versucht möglichst günstige Hardware zu verwenden, weshalb auf den Mikrocontroller TNOde (Mica2 clone) zurückgegriffen wurde. Dennoch werden 24 Ein- heiten benötigt, welche 27€ pro Einheit kosten, welche eine Gesamtsumme von 640€ entspricht. Zusätzlich wird aufgrund von spezieller Verkabelung noch eine Stunde Ar- beitszeit pro Einheit benötigt. An jedem Mikrocontroller ist ein externer ADC angeschlossen. Nach dem Messen der Daten werden sie mit einer Node-ID und einem Zeitstempel versehen. Diese Daten werden via USB zu einem modifizierten Linksys NSLU2 Gerät gesendet und gespeichert. Jeder der Nodes (ein MCU) generiert einen Datenfluss von 180 KB/s. Besonders im Fokus stand in diesem Projekt der Fakt, dass mehrere MCUs gleichzeitig vermessen werden und somit ein realistisches Szenario für Sensornetzwerke geschaffen werden kann. 3.4. SPOT SPOT, ein Ansatz auf den Jahr 2007, verfolgt das Ziel, mit einem geringen Budget möglichst genaue Messungen zu erstellen[8]. Gemessen wird hier integrativ, aber im Ge- gensatz zu MSP430 EnergyTrace nicht mit einer wechselnden Kondensatorschaltung, sondern mit einem Voltage-to-frequency converter, einem analogen Wandler von einer 12
3.4 Literatur Spannung zu einer Frequenz. Diese Frequenz kann mit einen Mikrocontroller digital er- fasst und der Stromverbrauch ermittelt werden. Die Samplingfrequenz beträgt 10kHz. Die Auflösung der Messung wird mit < 1µA angegeben, da die Energiemenge ausschlag- gebend ist und nicht die Taktfrequenz wie bei einem ADC. Bei diesem Projekt wurde darauf geachtet, mit COTS ICs(Integrated Circuit, Inte- grierter Schaltkreis) zu arbeiten. Deshalb waren die Kosten geringer als 25$ (im Jahr 2020 ca. 31$). Dennoch ist die Hardware nicht fertig gebaut verfügbar. Diese ist aber für dauerhaften Einsatz in Live-Systemen bzw. zur Online-Modellierung gedacht und nicht nur als Testbed-Umgebung. 13
4. Konzept Dieses Kapitel erläutert zu Beginn die zwei, bzw. drei grundsätzlichen Ideen zur Energie- messung mit COTS Hardware. Alle der folgenden Ansätze nutzen MSP430 EnergyTrace zur Energiemessung und unterscheiden sich lediglich in der Art der Synchronisierung. Es werden verschiedene Konzepte erläutert und implementiert um zu ermitteln wel- cher der Lösungsansätze zuverlässige und akkurate Energiemodelle erstellt. Das Grundproblem besteht darin, dass EnergyTrace nur die Zeitreihe mit gemessenen Energiewerten zurückgibt, diese stehen in keinerlei Verbindung mit dem Prozessorstatus, UART oder dem Logic Analyzer. Die Synchronisierung des Datenstroms von Energy- Trace mit den Transitionen und Zuständen ist das Hauptthema dieser Arbeit. Die dafür entwickelte Lösung ist, mit Synchronisierungspunkten zu arbeiten, wie in Abschnitt 4.4 vorgestellt. USB Computer Logic Analyzer USB IO Pin MSP430 Launchpad IO Ports / I²C / SPI etc. Verbraucher Abbildung 4.1.: Schematische Darstellung des Messaufbaus. Bei der UART/Timer Va- riante wird der graue Teil nicht verwendet. Das Konzept dieser Arbeit lässt sich, wie in Abbildung 4.2 dargestellt, in verschiede- ne Abschnitte gliedern. Der erste Teil bezieht sich auf die Benchmarkerstellung, bei der Markierungen für die spätere Synchronisierung erstellt werden. Der zweite Teil umfasst die Datenaufnahme, dort liegt der Fokus hauptsächlich auf der Kommunikation mit dem Logic Analyzer. Der dritte Teil beinhaltet die Synchronisierung der Daten mit anschlie- ßender Zuordnung zu den Zuständen und Transitionen. Danach werden die Daten zur weiteren Analyse dfatool übergeben. Alle Abschnitte wurden in Python implementiert, sodass sie von dfatool verwendet werden können. Die folgenden Konzepte basieren auf den existieren Projekten multipass (Bibliotheksbetriebssystem ohne Scheduling) und den von dfatool generierten Bench- marks. 15
Konzept 4.2 Benchmark- Datenaufnahme Synchronisierung Zustandsanalyse Auswertung generierung Abbildung 4.2.: Strukturerläuterung in Form eines Datenflussdiagramms. Der graue Be- reich kennzeichnet die existierenden Bereiche des dfatools. 4.1. Logic Analyzer g() h() Abbildung 4.3.: Darstellung Synchronisierungssignale (blau) und Funktionsaufrufe (orange, rot, grün) mit anschließender Wartezeit (Zustände). Bei diesem Synchronisierungsansatz werden an Funktionsaufrufen im Code, bzw. Tran- sitionen im Automaten, jeweils Änderungen am Logikpegel vorgenommen. Am Anfang einer Transition wird der angegebene IO Pin auf HIGH (3,3V ) gesetzt, wenn die Transi- tion beendet ist, wieder auf LOW (0V), siehe Abbildung 4.3. Diese Transitionen werden vom Logic Analyzer aufgezeichnet und ebenso wie die EnergyTrace Daten per USB an den Computer weitergegeben. Eine Darstellung des Aufbaus ist in Abbildung 4.1 zu sehen. Im Gegensatz zu den folgenden Varianten wird der Logic Analyzer als externe Hard- ware benötigt. Dafür hat dieser eine höhere Auflösung und so sind auch Transitionen zuordenbar. Außerdem wird im Gegensatz zu den anderen Varianten, am Launchpad der geringste Overhead erzeugt, der die Messung beeinflussen könnte. Die Instruktionen um einen IO-Pin zu schalten sind nur wenige Prozessorzyklen lang. Implementations- technisch muss im Gegensatz zu den anderen Varianten, die Schnittstelle zum Logic Analyzer geschaffen werden. 4.2. UART / Timer Das Konzept bei diesem Synchronisierungsansatz ist, dass ein Prozessorzähler verwendet wird. Dieser wird gestartet, wenn ein Zustand oder eine Transition beginnt und am Ende 16
4.4 Konzept gestoppt. Im Anschluss werden diese Werte per UART an den Computer übertragen, daraus entsteht ein Verlauf ähnlich zu Abbildung 4.3. Im Gegensatz zum vorherigen Ansatz kommt hierbei der Logic Analyzer nicht zum Einsatz, beide Datenströme werden über die gemeinsame USB Schnittstelle gesendet. Dies hat zum einen den Vorteil, dass keine externe Hardware benötigt wird, allerdings ist die Genauigkeit mitunter nicht so vorhanden, wie bei der Verwendung eines Logic Analyzers. Die Daten, die später dem Synchronisierungsalgorithmus zur Verfügung ge- stellt werden, müssen zunächst noch angepasst werden, da die Daten, die über UART transferiert werden, lediglich die Längen der Transitionen und Zustände sind. Außerdem vergeht zwischen des Stopp- und Startaufrufs des Hardwaretimers Zeit. Diese kann dazu führen, dass die Synchronisierungsdaten nicht mehr mit den Energiedaten übereinstim- men. Es könnten auch Schwierigkeiten durch die Ausführungszeit des einzelnen Start- und Stoppaufrufs entstehen. 4.3. Barcode Das Konzept der Barcodevariante besteht darin, Informationen zur Codeposition über Barcodes im Energieverbrauch zu übermitteln. Diese Barcodes können durch das An- steuern fester Verbraucher, wie den LEDs des LaunchPads, über einen bestimmten Zeitraum erzeugt werden. Vorteilhaft ist hier, dass keine parallelen Datenströme mit verschiedenen Zeitstempeln existieren, da sowohl die Synchonisierungsdaten, als auch die Energiedaten über EnergyTrace gesendet werden. Zusätzlich wird hier, wie bei der UART/Timer Variante keine externe Hardware benötigt. Gerade bei Transitionen, die nur wenige Prozessorzyklen bzw. wenige Mikrosekunden lang sind, könnten aber Genau- igkeitsverluste auftreten. Für die Übertragung der Barcodes wird Zeit benötigt, sodass diese eindeutig erkennbar sind. Diese Zeit verlängert die Benchmarkausführung im Ge- gensatz zu den anderen vorgestellten Varianten deutlich. Diese Methode wird in dieser Arbeit nicht weiter verfolgt, da es vorerst keine sinn- vollen Vorteile gegenüber der UART Version gibt. Für den Nutzer ist es prinzipiell irrelevant, welche Daten über den USB-Port versendet werden. 4.4. Synchronisierung Die Synchronisierung ist notwendig, um Zustände ihrem korrespondierendem Energie- messbereich zuzuordnen. Die Daten, die vom Logic Analyzer oder UART per USB an den PC gesendet werden, werden im Folgenden Synchronisierungdaten genannt. Grundidee der Synchronisierung ist, dass es am Anfang als auch am Ende einen Synchronisierungs- punkt gibt. Dieser Punkt ist sowohl in der Messung von EnergyTrace als auch in den Synchronisierungdaten zu erkennen und kann mithilfe fester Verbraucher wie den LEDs erzeugt werden. Um diese Erkennung möglichst präzise zu gestalten, sollte sich dieser Punkt von nor- malen Zuständen abgrenzen. Dies kann mithilfe von drei Faktoren entschieden werden: Dauer, Energiebedarf und Position. Die Dauer sollte ausreichend gewählt sein, sodass sie länger ist als die eines Zustands. Der Energieverbrauch sollte möglichst hoch sein, um 17
Konzept 4.4 nicht mit einem Zustand verwechselt zu werden. Selbst wenn innerhalb des Benchmarks erneut Stellen als Synchronisierungspunkte erkannt werden, ist dies nicht ausschlag- gebend, da in der Liste der möglichen Synchronisierungspunkte der erste Eintrag als Startpunkt, bzw. der Letzte als Endpunkt gewertet werden kann. Mithilfe des ersten Synchronisierungspunkts ist es möglich, den Versatz, den Star- toffset, am Anfang zu berechnen. Dazu wird die Differenz des Zeitstempels des ersten Synchronisierungspunkts aus EnergyTrace mit dem zugehörigen Zeitstempel des Logic Analyzers bzw. der UART Aufzeichnung gebildet. Diese Differenz wird auf alle Zeit- stempel der Synchronisierungdaten angewendet, um diese passend auf der Zeitachse zu verschieben. Nach einigen Tests der Synchronisierung schien der Drift linear approximierbar zu sein. Mit dem zweiten Punkt ist es möglich, den linearen Drift zu berechnen und damit die Synchronisierungdaten zu stauchen oder strecken. Dazu wird der Zeitbereich zwi- schen den Synchronisierungspunkten in den Synchronisierungdaten mit den Synchro- nisierungspunkten aus EnergyTrace verglichen. Daraus entsteht ein Faktor, der wieder auf alle Zeitstempel der Synchronisierungdaten angewendet werden kann. Damit wer- den diese den Synchronisierungspunkten angeglichen. Dies funktioniert nur bei linearem Drift, wie er in diesem Fall aufgetreten ist. Falls der Drift nicht der Form f (t) = a · t + b folgt, wobei f (t) ein EnergyTrace Timestamp ist, a der Driftfaktor und b der Startoffset, müssten weitere Synchronisierungspunkte eingefügt werden. Zwischen diesen Punkten könnte erneut die Approximation linearen Drifts verwendet werden, da bei kleineren Intervallen eine geringere Abweichung entsteht. Mit dem von dfatool generierten Benchmarkplan kann aufgelöst werden, welcher Zeit- bereich zu welchem Zustand bzw. zu welcher Transition gehört. Dadurch lässt sich die Durchschnittsleistung pro Zustand und Transition errechnen. 18
5. Implementierung In diesem Kapitel wird die Softwarestruktur inklusive der Implementierung der Konzepte aus dem vorherigen Kapitel vorgestellt. Diese Arbeit lässt sich, wie im Konzept erwähnt, in mehrere Bereiche aufteilen, der Benchmarkerstellung, gefolgt von der Datenaufnahme und schlussendlich die Synchronisierung. Nach der Synchronisierung wird die Auflösung der Zustände und die Einbindung in dfatool vorgestellt. Abschließend wird erläutert, welche Algorithmen zur potentiellen Verbesserung entwickelt wurden. Um während der Programmierung und Auswertung einen Überblick der Synchroni- sierung zu erhalten, wurde die Möglichkeit eingebaut, die synchronisierten Daten zu betrachten, inklusive annotierter Zustandsnamen. Power in Watt 0.0175 1 2 3 With calculated Driftfactor 0.0150 0.0125 0.0100 0.0075 0.0050 0.0025 0.0000 0 2 4 6 8 10 12 time (s) Abbildung 5.1.: Benchmark nach abgeschlossener Synchronisierung. 1-3 kennzeichnen die Synchronisierungspunkte. 5.1. Benchmarkerstellung mit dfatool Grundsätzlich wird bei dfatool ein Timer-Pin zur Synchronisierung bereits unterstützt, da dieser auch für MIMOSA Messungen benötigt wird. Somit muss an dieser Stelle kein Generierungscode verändert werden. Die Synchronisierungspunkte am Anfang und Ende müssen noch hinzugefügt werden. 19
Implementierung 5.2 ... ptalog . passTransition (16) ; ptalog . startTransition () ; r e s i s t i v e L o a d . switchTo1K0 ( ) ; ptalog . stopTransition () ; a r c h . sleep_ms ( 2 0 0 ) ; // P11MW p t a l o g . dump ( 1 ) ; // n i c h t nach jedem Zustand ... Listing 5.1: Auszug aus generiertem Benchmark Code. Das Skript generate-dfa-benchmark.py wird aufgerufen, um mithilfe von dfatool Bench- marks zu erstellen. Dieses Skript erstellt Benchmarkcode und teilt diesen gegebenenfalls auf und flasht ihn auf den Mikrocontroller. Ein Ausschnitt des generierten Benchmark- codes ist in Listing 5.1 zu sehen. Die Klasse harness.py wurde um die Generierung der Funktion runLASync() erwei- tert. Diese Funktion wird beim Start und Ende eines Benchmarks ausführt. Um sich möglichst von anderen Zuständen abzugrenzen, wird ein hoher Energieverbrauch benö- tigt, welcher durch die gleichzeitige Aktivierung beider LEDs auf dem LaunchPad er- reicht wird. Diese verbrauchen auf dem verwendeten LaunchPad ca. 14,4mW , aufgrund von fertigungsbedingten Schwankungen kann dieser Wert auf anderen Launchpads ab- weichen. Dieser Zustand hält für eine Sekunde an, bevor die LEDs wieder ausgeschaltet werden. Diese Synchronisierungspunkte sind in Abbildung 5.1 an den Markierungen 1-3 zu sehen. Am Ende von jeder dfatool Messung entsteht ein Archiv. Dieses Archiv enthält die Datei ptalog.json, welche den Benchmarkplan und alle Benchmarkeinstellungen um- fasst, sowie alle von Energytrace erstellten *.etlog Dateien und bei der Verwendung des Logic Analyzers die logic_output_log_*.json. In der Datei ptalog.json werden Laufzeiten der Zustände und Transitionen gespei- chert. Im Fall der Synchronisierung mit dem Timer wird bei Beginn einer Transition oder eines Zustandes ein extra Hardwaretimer gestartet, mithilfe dessen die Laufzeiten ge- messen werden können. Während der Übertragung der Daten vom Mikrocontroller zum Computer kommt es zu einer Übertragungszeit, in der sich der Mikrocontroller nach Logikpegel noch im vorherigen Zustand befindet. Diese kann mit der Zustandslänge, die bei der Benchmarkerstellung angegeben wurde, herausgerechnet werden. 20
5.3 Implementierung 5.2. Sigrok DataInterface wird nur bei Messungen ohne dfatool notwendig SigrokInterface EnergyInterface SigrokCLIInterface SigrokAPIInterface Abbildung 5.2.: Vererbungshierarchie der groben Softwarestruktur bei der Datenauf- zeichnung. Die Softwarestruktur, wie in Abbildung 5.2 zu sehen, ist eine Vererbungshierarchie, wobei DataInterface die Hauptklasse ist. So lassen sich weitere Implementationen in diese Struktur einbringen. Die Klasse SigrokInterface stellt Einstellungen wie Treiber und Samplingfrequenz zur Verfügung, die von beiden Subklassen benötigt werden. Die Daten, die sowohl von sigrok-cli als auch von der API kommen, sind nur aktuelle Werte, d.h. bei einer Auflösung von 1M Hz wird pro Zeitstempel ein Sample an allen Eingängen gemessen. Das bedeutet, bei 8 Logic Analyzer Eingängen, fallen pro Sekunde 1M B Daten an. Bei der API Variante wird diese per Callback über neue Datenpakete informiert und anschließend ausgewertet. Das Stoppen der Messung gestaltet sich bei der CLI Variante per Linux kill schwierig, die API bietet eine close() Methode. Um die Datenverarbeitung zu erleichtern und Speicherplatz zu sparen, wird nach Ende der Datenaufnahme ein simpler Kompressionsalgorithmus angewendet, sodass lediglich die Zeitstempel gespeichert werden, bei denen sich der Logikpegel ändert. Bei der Vari- ante mit CLI, wird ein Befehl (s. Listing A.1) ausgeführt und die entstandene Datei danach ausgewertet. Diese Zeitstempel werden in der Datei logic_output_log_*.json gespeichert. 5.3. Synchronisierung Die Synchronisierung ist der wichtigste Teil dieser Arbeit. Diese lässt wie folgt aufteilen: • Entfernen falscher Timingdaten • Identifizieren der Synchronisierungspunkte • Anwendung des Startoffsets auf die Timingdaten • Anwendung des Drifts auf die Timingdaten Werden die Logic Analyzer Messung und die EnergyTrace Messung nicht gleichzeitig gestartet bzw. nicht rechtzeitig vom System gestoppt, werden am Anfang und Ende zu viele Daten aufgezeichnet. Das passiert, wenn direkt im Anschluss eine Benchmarkwie- derholung startet und diese bereits Flanken am IO Pin generiert. Diese Daten können 21
Implementierung 5.3 in einer geeigneten Konfiguration herausgefiltert werden, indem die Abstände zwischen den Zeitstempeln des Logic Analyzers betrachtet werden. Wenn diese Abstände grö- ßer als das Warteintervall bei Zuständen(bspw. 200ms) und größer als der Start- und Endsynchronisierungspunkt(1000 ms) sind, kann davon ausgegangen werden, dass die Logic Analyzer Messung bereits beendet sein sollte. Alle nachfolgenden Daten werden verworfen. Einen Einfluss auf folgende Messungen hat dieser Vorgang nicht. Dies führt ansonsten zu nutzlosen Daten, da der Algorithmus zum Finden der Synchronisierungs- punkte mit falschen Grundannahmen arbeitet. Danach werden die Daten zunächst zwischengespeichert. Im weiteren Verlauf des Al- gorithmus werden diese Synchronisierungsdaten verändert. Diese rohen, unveränderten Daten werden noch für die Zeitmessung der Transitionen benötigt. Bedingt durch die Architektur gehören die eingefügten Synchronisierungspunkte nicht zum Benchmark und sind deshalb nicht in der ptalog.json enthalten. Deshalb werden diese vor der Auswertung der Timervariante relativ zum ersten bzw. letzten vorhandenen Punkt künstlich eingefügt. Zur Bestimmung der Synchronisierungspunkte innerhalb der Daten von EnergyTrace, werden alle Messpunkte durchiteriert, bis die Synchronisierungspunkte gefunden werden. Der im Folgenden beschriebene Algorithmus ist in Listing 5.2 zu sehen. Für den Algorithmus gibt es maßgebliche Einstellungen, wie die Mindestdauer ei- nes gefundenen Synchronisierungspunkts und die Mindestleistung. Diese Werte sind im diesem Fall self.power_sync_len = 1 und self.power_sync_watt = 0.012. Die Daten von EnergyTrace enthalten den Zeitstempel und die bis zu diesem Zeitstempel verbrauchte Energie. Diese Daten können wie in Listing 5.2 (Zeile 2-5) sichtbar in die Leistung umgerechnet werden. Zunächst wird pro Zeitstempel die vergangene Zeit berechnet, um daraus mithilfe der angegebenen Energie die Leistung zu berechnen. Teilweise ist die verwendete Energie laut EnergyTrace 0J, obwohl Zeit vergangen ist. Deshalb wird dieser Datensatz verwor- fen. In wie weit dies Einfluss auf die Auflösung hat, wird in Abschnitt 6.1 dargestellt. Wenn die Leistung größer als die Mindestleistung ist, wird dieser Zeitstempel als mögli- cher Start eines Synchronisierungspunkts gespeichert. Wenn die Leistung danach gerin- ger als die Mindestleistung ist, wird dieser Zeitstempel als mögliches Ende gespeichert. Wenn nach zwei aufeinanderfolgenden Messpunkten die Leistung immer noch unter der Grenze ist, wird überprüft, ob die Zeitdauer zwischen Start- und Endpunkt größer als die Mindestdauer ist. Falls ja, wird der Synchronisierungspunkt hinzugefügt. Die zwei Messpunkte, die unterhalb der Grenze liegen, werden toleriert, da es zu Ausreißern in den Daten von EnergyTrace kommen kann. In der Liste datasync_timestamps sind Tupel mit potentiellen Synchronisierungs- punkten vorhanden. Der erste Eintrag des Tupels enthält den Startpunkt des möglichen Synchronisierungspunkts, der zweite Eintrag den Endpunkt. Neben dem Energiebedarf und der Zeitdauer der Punkte wurde im Konzept zur Identifizierung die Position er- wähnt. Wie in Abbildung 5.1 sichtbar, sind jeweils der erste Eintrag in der Liste, sowie die letzten beiden, Synchronisierungspunkte. Wenn der generierte Benchmark ebenfalls einen Zustand haben sollte, der über der Mindestleistung und der Mindestdauer liegt, wird dieser nicht mitbetrachtet. 22
5.3 Implementierung f o r i , e n e r g y t r a c e _ d a t a s e t i n enumerate ( s e l f . energy_data ) : usedtime = energytrace_dataset [ 0 ] − last_data [ 0 ] # in microseconds timestamp = e n e r g y t r a c e _ d a t a s e t [ 0 ] usedenergy = energytrace_dataset [ 3 ] − last_data [ 3 ] power = u s e d e n e r g y / u s e d t i m e ∗ 10 ∗∗ −3 # i n w a t t s i f power > 0 : i f power > s e l f . power_sync_watt : i f s y n c _ s t a r t i s None : s y n c _ s t a r t = timestamp outliers = 0 else : # Sync p o i n t o v e r or o u t l i e r s i f o u t l i e r s == 0 : p r e _ o u t l i e r s _ t s = timestamp o u t l i e r s += 1 i f o u t l i e r s > s e l f . power_sync_max_outliers : i f s y n c _ s t a r t i s not None : i f ( p r e _ o u t l i e r s _ t s − s y n c _ s t a r t ) / 1_000_000 > s e l f . power_sync_len : datasync_timestamps . append ( ( s y n c _ s t a r t / 1_000_000 , p r e _ o u t l i e r s _ t s / 1_000_000 ) ) s y n c _ s t a r t = None last_data = energytrace_dataset Listing 5.2: Code zum Finden der Synchronisierungspunkte Zum Ausgleich des Startoffsets wird die Differenz aus Soll- und Istwert auf jeden Punkt angewendet. Da bei der Timervariante die Synchronisierungspunkte künstlich erzeugt werden müs- sen, stimmen bei der Driftberechnung die Dauer dieser Synchronisierungspunkte nicht unbedingt mit der tatsächlichen Dauer überein. Deshalb werden die in Abbildung 5.1 orange markierten Stellen zur Synchronisierung verwendet, der Endpunkt von 1 und der Startpunkt von 2. Da nur die Synchronisierungsdaten verändert werden und nicht die Daten von Ener- gyTrace, muss auf diese die folgende Formel für die Zeitstempel angewendet werden. new_timestamp = ((old_timestamp - start_timestamp)* endFactor)+ start_timestamp Der Code, um den Drift herauszurechnen, ist in Listing 5.3 zu sehen. d e f a d d D r i f t ( s e l f , input_timestamps , end_timestamp , e n d _ o f f s e t , s t a r t _ t i m es t a m p ) : # Add d r i f t t o d a t a p o i n t s en dFactor = ( end_timestamp + e n d _ o f f s e t − s t ar t _ t i me s t a m p ) / ( end_timestamp − s t ar t _ t i me s t a m p ) modified_timestamps_with_drift = [ ] f o r x i n input_timestamps : m o d i f i e d _ t i m e s t a m p s _ w i t h _ d r i f t . append ( ( ( x − s t a rt _ t i m es t a m p ) ∗ endFactor ) + s ta r t _ ti m e s t a mp ) return modified_timestamps_with_drift Listing 5.3: addDrift() Funktion. 23
Implementierung 5.5 Energy 0.007 With calculated Driftfactor 0.006 0.005 0.004 200 ms 0.003 0.002 0.001 0.000 6.0 6.1 6.2 6.3 6.4 Abbildung 5.3.: Ein Zustand mit UART Sendevorgang. Der orange markierte Bereich zeigt die Übertragungszeit, solange verbleibt der Logikpegel im vorhe- rigen Zustand. Zur Bestimmung der Leistung pro Zustand bzw. Transition werden die Durchschnitts- werte der Leistung innerhalb der Intervalle errechnet. Teilweise werden UART Daten während des Benchmarks zur Synchronisierung an dfatool geschickt, dies passiert jedoch nicht nach jedem Zustand, siehe Listing 5.1. Das Verhalten wird im Zeit- und Energiebedarf deutlich, siehe Abbildung 5.3. Beim Aufruf durch dfatool werden die Einstellungen des Benchmarks ausgelesen, wie die Dauer ei- nes Zustands. Damit können dann Datensätze ignoriert werden, welche einen Zustand beschreiben, der länger als die Solldauer ist. 5.4. Einbindung Auswertung in dfatool Diese Arbeit wird über die Vererbungshierarchie von dfatool eingebunden. Die Bench- markgenerierung wird in der Datei harness.py eingefügt, indem abgefragt wird, ob die Option --energytrace=sync gesetzt ist. Die Datei runner.py wurde um eine Subklas- se von EnergyTraceMonitor erweitert, die Klasse EnergyTraceLogicAnalyzerMonitor. Diese startet am Anfang der Messung den Logic Analyzer und gibt die generierten Daten am Ende zurück. Die Datei loader.py wurde um zwei Klassen, EnergyTraceWithTimer und EnergyTraceWithLogicAnalyzer erweitert. Diese bereiten die Daten auf und geben sie an die Klasse DataProcessor weiter. 24
5.5 Implementierung 5.5. Algorithmen zur Genauigkeitsverbesserung Die Dauer einer Transition liegt meistens bei 40µs, kann diese Dauer aber auch un- terschreiten. Das Intervall der Datensätze von EnergyTrace ist 3,7kHz1 = 270µs. Ein Intervall des Logic Analyzers ist ca. 1M Hz = 1µs. Aufgrund dieses starken Unterschieds 1 ist es theoretisch möglich die niedrige Frequenz von EnergyTrace auszugleichen, solan- ge angenommen wird, dass die Leistung während einer Transition oder einem Zustand konstant ist. Da ein Datensatz von EnergyTrace immer das Energieverhalten der letzten 270µs wiedergibt, kann die Energie anhand der Synchronisierungsdaten genauer berech- net werden. Wie in Abbildung 5.4 zu sehen, wird hierfür für die Leistung kurz vor und nach der Transition des letzten bzw. nächsten Datenpunktes angenommen. Mathema- tisch betrachtet bleibt das Integral unter der Leistung gleich groß. 20 Ursprüngliche Daten Veränderte Daten 18 Ursprüngliche Datenpunkte 16 14 Leistung [mW] 12 10 8 6 4 0 2 4 6 8 10 12 Zeit [s] Abbildung 5.4.: Wirkweise des Algorithmus für Genauigkeitsverbesserung, in grün die Synchronisierungssignale(z.B. vom Logic Analyzer). Des Weiteren wurde ein Algorithmus untersucht, der Peaks im Energiebedarf den tat- sächlichen Transitionen zuordnet, die laut Benchmarkplan noch einige Mikrosekunden hinter den Peaks liegen sollten. Diese beiden Algorithmen sind nur rudimentär implementiert worden. Deren Effizienz bzw. Einsatzkraft wird in der Evaluation geklärt. 25
Sie können auch lesen