Multicore-Debugging UDE ermöglicht synchrones Debuggen von Aurix-Multichip-Systemen

Bild 1: Multi-Aurix-Versuchsaufbau.
Bild 1: Multi-Aurix-Versuchsaufbau.

Mit dem neuen Multi-Target-Debug-Adapter für das Universal-Access-Device UAD3+ der Universal-Debug-Engine (UDE) präsentiert PLS Programmierbare Logik & Systeme das erste Tool, das ein synchrones Debugging von Multi-Chip-Systemen erlaubt.

Die modularen Multi-Target-Debug-Adapter von pls unterstützen unterschiedlichste High-Performance-Systeme, die mit zwei getrennten Mikrocontrollern auf einem Board redundante und gegebenenfalls invertierende Steueralgorithmen ermöglichen. Ein besonderer Fokus gilt dabei zukünftigen Anwendungen mit höchsten Anforderungen an die funktionale Sicherheit und Fehlertoleranz, beispielsweise Fail-Operational-Systemen im Bereich des autonomen Fahrens. Aber auch in aktuellen High-Performance-Automotive-Systemen wie den seit kurzem von Infineon verfügbaren Automotive Gateway-Entwicklungs-Boards mit zwei Infineon Aurix-Multicore-Mikrocontrollern stellt das Toolkit seine Fähigkeiten unter Beweis. 
Der Multi-Target-Debug-Adapter für das UAD3+ ermöglicht ein nahezu synchrones Anhalten und Wiederloslaufen von zwei eng verzahnten Aurix-Mikrocontrollern. Bild 1 zeigt den prinzipiellen Aufbau der Hardware für die Synchronisierung. Im konkreten Testfall handelt es sich um zwei getrennte, handelsübliche Infineon Evaluation Boards. An den Debug-Schnittstellen der beiden Aurix-Bausteine wird jeweils ein Standard-Debug-Adapter angeschlossen. Diese werden dann über den Multi-Target-Debug-Adapter mit einem Debug-Pod des UAD3+ verbunden, welches über die zwei notwendigen Debug-Kanäle verfügt. Auch für den Anwendungsfall, dass sich beide Controller auf dem gleichen Board befinden, wie es beispielsweise beim Automotive Gateway-Entwicklungs-Board von Infineon der Fall ist, bleibt die Nutzung von getrennten Debug-Schnittstellen aufgrund der On-Chip-Debug-Infrastruktur der einzelnen Mikrocontroller die Regel. Ergänzend zu den Konnektoren für die Standard-Debug-Adapter besitzt der Multi-Target-Debug-Adapter einen zusätzlichen Anschluss für bestimmte Trigger-Signale der beiden Aurix-Controller. Diese können entweder über einen extra auszuführenden Steckverbinder auf dem Target-Board bereitgestellt oder über separate Pins herausgeführt werden. In Bild 1 wurden die Anschlüsse mit Hilfe von Infineon-Extension-Boards realisiert. Eine spezielle Logik im Multi-Target-Debug-Adapter verknüpft die Trigger-Leitungen so, dass ein nahezu synchrones Anhalten und Wiederloslaufen der beiden Aurix-Mikrocontroller möglich wird. Dabei spielt es keine Rolle, ob das Gesamtsystem auf einen Breakpoint in einem der beiden Controller oder auf eine vom Nutzer ausgelöste Break-Aktion reagiert. Der durch die interne Logik des Adapters und die Signallaufzeiten auftretende Zeitversatz beim Anhalten beziehungsweise Wiederloslaufen zwischen beiden Controllern beträgt im Mittel nur zirka 65 ns, also bei typischen 300 MHz Taktfrequenz weniger als 20 Takte.

Bild 2 zeigt eine gemeinsame Debug-Session der beiden Aurix-Mikrocontroller innerhalb der UDE-Benutzeroberfläche. Alle Kerne der beiden Multicore-SoCs sind gleichzeitig zugänglich und kontrollierbar, die Systemzustände werden konsistent dargestellt. Selbstverständlich steht darüber hinaus auch das etablierte Multicore-Run-Control-Management der UDE für das Debugging von Multi-Aurix-Plattformen zur Verfügung. Dabei können alle oder eine definierbare Anzahl von Kernen der beiden Controller in einer Run-Control-Gruppe zusammengefasst werden. Der im Screenshot erkennbare geöffnete Multicore-Run-Control-Manager wurde durch den Anwender in diesem Beispiel so konfiguriert, dass nur eine Auswahl von sieben der insgesamt zwölf verfügbaren Kerne in der Run-Control-Gruppe enthalten ist. Für alle Kerne dieser Gruppe sind Breakpoints, manuelles Anhalten und natürlich auch synchrones Wiederloslaufen gemeinschaftlich wirksam, während alle anderen Kerne davon unberührt bleiben. So laufen diese im abgebildeten Beispiel auch dann weiter, wenn der zur Run-Control-Gruppe zugehörige Core-0 des ersten der beiden Aurix-Controller auf einen Breakpoint läuft. Einen schnellen Überblick über den jeweiligen Zustand der einzelnen Cores der beiden Controller erhält der Anwender über den Target-Manager, der sich in der Abbildung auf der linken Seite befindet.