Embedded-Software und Energieverbrauch
In der Vergangenheit war es für den Softwareentwickler von untergeordneter Bedeutung die Software stromsparend auszulegen. Allenfalls bei der Entwicklung von batteriebetriebenen Geräten war der Stromverbrauch ein wesentlicher Parameter. Aber auch hier war eigentlich mehr der Hardwareentwickler gefordert, die beste Optimierung des Engergieverbrauchs zu realisieren. Diese Situation hat sich grundlegend geändert, seit Systeme wie PowerScale oder das “Power Debugging” als Zusatz-Feature in der Entwicklungsumgebung angeboten werden.
Software energie-effizient entwickeln
Wenn diese Anforderung an den Software-Entwickler herangetragen wird, muss zunächst einmal der herkömmliche Entwicklungsprozess betrachtet werden. Und die Frage, wo energierelevanten Elemente zu finden sind, die bereits bei der Softwareentwicklung beeinflussbar sind, bekommt dabei einen höheren Stellenwert. Zunächst wird der Entwickler nach einem Mikrocontroller suchen, der den Anforderungen an seine Applikation in bezug auf Performance, Speichervolumen sowie zu bedienender Peripherien genügt bzw. als am besten geeignet erscheint. Es wird Ihm auch relativ leicht fallen, diese Auswahl bezüglich des Energieverbrauchs des Controllers zu lösen, da zwischenzeitlich alle namhaften Chiphersteller dieser Anforderung bereits beim Design des Microcontrollers Rechnung getragen haben: diverse Sleep- Modi bis hin zum Power-Down des Controllers stehen zur Verfügung.
Ist dann die erste Hardware verfügbar, kommt die Stunde der Wahrheit: werden die Parameter in Hinsicht auf den Leistungsverbrauches des Mikrocontrollers auch eingehalten? Und noch spannender ist die Frage, wie sieht die Energiebilanz der gesamten Applikation aus, da z. B. PLL-Frequenz, An- und Abschaltzeiten der Peripherie sowie das Interruptmanagement in den Engegieverbrauch eingehen?!
Neue Möglichkeiten der Energieeffienz-Messung und -Optimierung
Zu diesem Thema finden sich aktuell – wie schon erwähnt – zwei Lösungsansätze: zum einen über das sogenannte “Power Debugging” als Bestandteil der Entwicklungsumgebung oder der PowerScale von Hitex, eine Stand-alone Lösung, die universell eingesetzt werden kann.
Power Debugging
Das Power Debugging ist konkret an eine bestimmte Entwicklungsumgebung gebunden und hat einen anderen Ansatz gewählt. Wie der Name bereits zum Ausdruck bringt, wird der verwendete Debugger als Hardware eingesetzt. Dies impliziert allerdings, dass die Debugger-Hardware konfigurationbedingt, bereits einen Einfluss auf die Strommessung hat. Ausserdem wird in Bezug auf die realisierbare Taktrate nur eine maximale Sample-Rate von 50 kHz erreicht. (PowerScale erreicht mit einer angeschlossen Probe ist die max. Sample-Rate 100 K Sample/sec). Power Debugging ist ausschließlich mit Cortex-Controllern möglich, da deren Serial Wire Viewer genutzt werden kann um Daten (z.B aktueller PC, Interrupts) zu senden. Hierdurch wird eine Korrelation zur Anwendersoftware hergestellt. Diese Korrelation ist aber beim Daten-Sampling mit dem PC sehr ungenau, so dass schnelle Softwareaktivitäten nicht erkannt werden können. Auch die Zuordnung von Energieverbrauch zu bestimmten Funktionen – beim PC-Sampling heißt das “Profiling” – ist nicht unbedingt dazu geeignet herauszufinden, welche Softwareaktivitäten (Veränderung der PLL, Zugriff auf externen Bus, Aktivierung oder Deaktivierung des ADC, etc.) zu Veränderungen des Energiekonsums führen.
Das PowerScale Konzept
Grundgerät plus Probes zum Anschluss an die Zielhardware, großer Messbereich von 200 nA bis 500 mA, einfachste Adaption, eine GUI zur grafischen Darstellung der Messergebnisse und eine offene API. So sieht die architekturunabhängige Messung und Optimierung der Energiebilanz von Embedded Applikationen mit PowerScale aus! Ein Konzept übrigens, das als erstes seiner Art auf den Markt kam und gleich den Embedded Award 2010 in der Kategorie “Tools” gewinnen konnte. Aber ein Hardware-Tool ausgerechnet für den Software Entwickler, der bekanntermaßen zunächst einmal eine gewisse Zurückhaltung zeigt, wenn es um Tools geht, die auch ein Stück Hardware beinhalten? Doch zwischenzeitlich sind diese Ressentiments überwunden: Entwickler die PowerScale einsetzen berichten nur Positives. Und so freuen wir uns über die beste Werbung, die man sich als Hersteller vorstellen kann, nämlich die Aussagen zufriedener Kunden: “Einfaches Handling bei der Hardware Adaptierung”, “schnelle und effiziente Messungen und Darstellung über eine übersichtliche GUI”, “… die Möglichkeit von Langzeitmessungen haben die Optimierung unserer Applikation bzgl. des Engergieprofils in kürzester Zeit ermöglicht”. PowerScale ist, wir erwähnten das bereits, architekturunabhänig einsetzbar und bietet mit einer offenen API die Möglichkeit der Integration in unterschiedlichste Entwicklungsumgebungen – und ist somit nicht von der verwendeten Compilerversion abhängig.
Mit PowerScale wurde eine unabhängige Lösung implementiert, die auch für alle anderen Mikrocontroller bis hin zu FPGAs oder Peripherals genutzt werden kann. Zur realen Strommessung werden alle Verfälschungen wie Debugger oder Serial Wire Viewer abgeschaltet. Nur zur Optimierung der Software werden diese Dinge zugelassen und hier werden Software-Events genutzt, die auch bei anderen Mikrocontrollern zur Verfügung stehen (IO, UART, SWV). Hitex ist dabei mit verschiedenen Chipherstellern in ständigem Kontakt, um die Universalität des Systems zu erhalten und weiter zu entwickeln.
Ein weiterer Vorteil ist die niedrigste zu messende Stromstärke. Das PowerScale System kann Werte ab 200 nA (ohne Rauschen) messen. Und durch die ACM-Probe (Advanced Current Measurement) kann ein Messbereich von 200 nA bis 500 mA mit nur einer Probe abgedeckt werden.
PowerScale in der Keil µVision Entwicklungsumgebung
Keil hat das Interesse an Engergiemessung- und Optimierung insbesondere bei Cortex-M basierenden Embedded Applikationen erkannt und gemeinsam mit Hitex eine Anbindung von PowerScale mit ULINKpro in µVision realisiert. Dies eröffnet allen Keil MDK-ARM Usern die komfortable Möglichkeit ihren Code sehr zügig im Hinblick auf die Energieeffizienz zu optimieren.
Welche System ist für die Optimierung des Energieverbrauchs am besten geeignet?
Die Antwort sollte sich der Entwickler nach Studium der aufgezeigten Möglichkeiten eigentlich selbst geben können: Unabhänig von der eingesetzten Architektur und damit universell verwendbar, könnte z. B. als Entscheidungskriterium für PowerScale sprechen. Hierfür ist allerdings eine Investition erforderlich. Bei Verwendung der Keil MDK-ARM, die bei Cortex-M einen relativ grossen Marktanteil repräsentiert, bietet die PowerScale-Anbindung ein geschlossenes und getestetes System an. Kommt bei Kunden eine Standard Entwicklungsumgebung zur Anwendung, die Power-Debugging als Feature beinhaltet und ausschliesslich Cortex-M basierende MCU’s evaluiert werden sollen, dann kann die Entscheidung auch für das “Power-Debugging” fallen.