Debugging UDE 5.0 mit Hypervisor-Awareness für virtualisierte Anwendungen

Eine Vielzahl völlig neuer Funktionen stellt PLS mit der neuesten Universal Debug Engine Version 5.0 zur Verfügung. Mit ihrer Hypervisor-Awareness unterstützt die UDE 5.0. unter anderem auch die Entwicklung virtualisierter Anwendungen unter dem LynxSecure Hypervisor für die Arm-Cortex-A53 Plattform.

Der aktuelle Trend geht immer mehr in Richtung Konsolidierung von mehreren bislang auf getrennter Hardware ausgeführten Anwendungen auf einer zentralen Rechnerplattform. Unterschiedliche Anforderungen an Safety, Security und an das Echtzeitverhalten verlangen jedoch hier eine strikte Abschottung, die nur über Virtualisierung zu erreichen ist. Mit der nun verfügbaren Hypervisor-Awareness stehen dem Entwickler jetzt auch die umfangreichen Debug-Möglichkeiten der UDE für die Entwicklung von virtualisierten Applikationen zur Verfügung. Spezifische Eigenschaften des Arm-Cortex-A53 wie zweistufige Adressumrechnung oder die Unterstützung von Interrupt-Virtualisierung werden durch die UDE 5.0 für den Anwender transparent behandelt. Wesentlich dabei ist, dass der Anwender wie gewohnt eine einzelne Bare-Metal-Applikation so debuggen kann, als ob diese statt innerhalb einer virtuellen Maschine (VM) auf echter Hardware ausgeführt wird. Umfangreiche Unterstützung erhalten Entwickler auch beim Debugging und der Systemanalyse des Hypervisors an sich. Für jede einzelne VM können sowohl deren Zustand als auch die jeweiligen Kontexte angezeigt werden. Darüber hinaus stehen neben Informationen zum Speicherlayout der einzelnen VMs auch die Zuordnungen der virtuellen zu den physikalischen Speicheradressen zur Verfügung.

Weiter vereinfacht und verbessert wurde in der UDE 5.0 der Umgang mit großen Mengen an aufgezeichneten Trace-Daten. Dabei wurde speziell auf die Visualisierung besonderes Augenmerk gelegt. So ist die zeitgenaue Darstellung der ausgeführten Funktionen und Betriebssystem-Tasks im UDE-Excecution-Sequence-Chart nun nach verschiedenen Gesichtspunkten sortierbar und filterbar (Bild oben). Verlinkungen erlauben eine leichte Navigation von den aufgezeichneten Funktionen hin zu deren Quellcode. In Kombination mit dem Add-in für den Support von Echtzeitbetriebssystemen nach dem OSEK-Standard können die Betriebssystem-Tasks zusammen mit den zugehörigen Runnables übersichtlich dargestellt und vermessen werden. Eine Exportfunktion für das Best-Trace-Format (BTF) erlaubt zudem die Weiterverarbeitung auch durch gängige Task-Analysewerkzeuge von Dritt­anbietern.

Als echter Multicore-Debugger unterstützt die UDE 5.0 auch die Visualisierung der Zustände und Kontrolle aller Kerne eines Multicore-Systems innerhalb einer einheitlichen Benutzeroberfläche. Noch effizienter als bisher gestaltet sich beispielsweise der Umgang mit Variablen, die durch den Compiler nur für einen bestimmten Core sichtbar gemacht werden. Solche Core-lokalen Variablen werden nun in den Watch-Fenstern der UDE entsprechend des jeweiligen Cores verschiedenfarbig hervorgehoben. Diese Einfärbung galt bislang zur besseren Übersicht nur für Fenster, die einem spezifischen Core zugeordnet sind, und für Statusinformationen der einzelnen Cores. Auch in puncto unterstützter Mikrocontroller zeichnet sich die UDE 5.0 durch zahlreiche Verbesserungen und Erweiterungen aus. So wurden die Debug-Funktionen für 64-Bit-Architekturen, beispielsweise für den Arm-Cortex-A53, weiter ausgebaut. Als gänzlich neue Bausteine aus der Arm-Welt sind unter anderem der 32-Bit-Arm-Controller Cor- tex-R52 und der Cortex-M-Mikrocontroller NETX 90 hinzugekommen. Dedizierten Debug-Support bietet die UDE 5.0 darüber hinaus auch für die neuen power-architecture-basierten Bausteine Chorus SPC58NH92x von STMicroelectronics sowie die Dual-Cores MPC5775B und MPC5775E von NXP. Letztere sind speziell die für rechenintensive Anwendungen aus dem Batteriemanagement und Inverter-Steuerungen ausgelegt und zielen sowohl auf den Industrie- als auch auf den Automotive-Sektor. Über den Nexus-Trace-Support der UDE sind für diese Bausteine die umfangreichen Funktionen zur exakten Laufzeitanalyse wie Profiling, Code-Coverage und die Visualisierung von Call-Graphen nutzbar. Von den erweiterten Debug- und Trace-Funktionen der UDE 5.0 profitieren insbesondere auch die Mikrocontroller der TC3xxx-Palette von Infineon. Neben den Multicore-Debug-Funktionen stehen Anwendern je nach Controller selbstverständlich auch Trace für nichtinvasives Debugging sowie für die Systemanalyse zur Verfügung. Für den TC35x kann das neue MCDSlight, für den TC38x die grundlegende Trace-Funktionalität des miniMCDS genutzt werden. Letzteres steht den Entwicklern auch in der Basislizenz der UDE zur Verfügung.

Um den speziellen Anforderungen von Fail-Safe- beziehungsweise Fail-Operational-Systemen gerecht zu werden, die mit zwei Controllern der Aurix-Familie eine Redundanz der Steuer-Controller sicherstellen, steht für die Target-Kommunikation mit dem Universal-Access-Device 3+ (UAD3+) ein spezieller, von PLS entwickelter Multi-Aurix-Adapter zu Verfügung. Zusammen mit der UDE 5.0 ermöglicht er sowohl ein synchrones Stop-Mode-Debugging – Break, Single-Step-Betrieb und Wiederloslaufen – als auch ein synchrones Anhalten der Peripherieeinheiten beider Controller, die über zwei separate Debug-Interfaces angesprochen werden.(fr)