Portenta H7 Dual-Core-Debugging
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Apps und Onlinedienste
| ||||
| ||||
|
Über dieses Projekt
Der Arduino Portenta H7 bietet eine Vielzahl von Funktionen und die Möglichkeit, Ihren Code auf zwei separaten Kernen auszuführen, die auch miteinander kommunizieren können!
Wir alle haben von Zeit zu Zeit Probleme mit unseren Projekten, daher zeigen wir hier, wie Sie einen Segger JLink verwenden können, um den Code, der auf beiden Kernen gleichzeitig läuft, zu debuggen!
Hardware-Setup
Sobald Sie Ihre Portenta H7 auf dem Breakout-Board montiert haben, müssen Sie Ihren MIPS 20-Pin-Konverter anschließen, um die Debugging-Pins auszubrechen.
Dann können Sie Ihren Konverter wie in den Bildern unten gezeigt an den Segger J-Link anschließen.
Wenn Sie Steckverbinder mit dem richtigen Rastermaß (0,05") haben, können Sie auch Ihren eigenen Steckverbinder verdrahten, wie im zweiten Bild gezeigt:
Software-Setup
Wir gehen davon aus, dass Sie die Arduino IDE bereits auf Ihrem Computer installiert haben (falls nicht hier herunterladen).
Installieren Sie dann Visual Studio (2017/2019/2022) und die Visual Micro-Erweiterung. Die vollständigen Anweisungen finden Sie hier.
Sie müssen auch das Board-Paket für Arduino Mbed OS Portenta Boards installieren aus dem Visual Micro Explorer (oder aus dem Boards Manager in der Arduino IDE).
Sie müssen den USB-Treiber auf Schnittstelle 0 Ihres Segger J-Link mit dem Tool Zadig.exe ersetzen (siehe Video unten für eine exemplarische Vorgehensweise).
Lets Code!
Jetzt müssen wir ein separates Projekt einrichten, eines für jeden Kern unseres Portenta-Boards. Der beigefügte Code ist ein einfaches Blink-Beispiel, bei dem jeder Kern eine andersfarbige LED blinkt. Richten Sie zum Debuggen jeden Kern in einer separaten Instanz von Visual Studio ein.
Vergessen Sie nicht, die bootM4()-Funktion in Ihrem M7-Core-Projekt aufzurufen, um sicherzustellen, dass beide Kerne laufen.
Debug-Setup:M7 Core
Öffnen Sie Ihren M7 Core Sketch und wählen Sie Debug> Hardware und den Segger J-Link Debugger (NICHT die "NoOpenOCD-Version)
Erstellen Sie jetzt Ihre M7-Skizze und laden Sie sie auf den M7-Kern hoch.
Software-Setup:M4 Core
Öffnen Sie Ihre Skizze und wählen Sie Debug> Hardware und den Segger J-Link Debugger (NoOpenOCD)
Erstellen Sie jetzt Ihre M4-Skizze und laden Sie sie auf den M4-Kern hoch.
Debugger starten
Beginnen Sie zuerst mit dem Debuggen mit der M7 Core-Skizze, indem Sie "Debug> Attach to Process" verwenden.
Beginnen Sie dann mit dem Debuggen mit der M4 Core-Skizze, indem Sie "Debug> Attach to Process" verwenden.
Sie sollten jetzt in der Lage sein, jedem Sketch einen Breakpoint hinzuzufügen und zu beobachten, wie der Debugger darauf stoppt ..... wobei jeder Kern in der Lage ist, unabhängig zu stoppen/schritten/fortzufahren!!
Walkthrough-Video
Eine exemplarische Vorgehensweise für diesen Vorgang finden Sie unten auf YouTube....
Nützliche Links
Dokumentation + Schaltplan
Portenta Breakout-Board
Segger JLink
Code
- H7 M4 Blinkcode
- H7 M5 Blinkcode
H7 M4 BlinkcodeArduino
Code zum Demonstrieren von Blink auf dem Portenta M4 Core// Code zum Demonstrieren von Blink auf dem Portenta M4 Core // Die Setup-Funktion wird einmal ausgeführt, wenn Sie Reset drücken oder das Boardvoid-Setup einschalten () { // Digital Pin 13 als an . initialisieren Ausgang. pinMode (LED_BLUE, OUTPUT);} // die Schleifenfunktion wird immer wieder ausgeführt forevervoid loop () { digitalWrite (LED_BLUE, HIGH); // schalten Sie die LED ein (HIGH ist der Spannungspegel) Verzögerung (1000); // auf eine zweite warten digitalWrite (LED_BLUE, LOW); // schalten Sie die LED aus, indem Sie die Spannung auf LOW stellen (1000); // warte eine Sekunde}
H7 M5 BlinkcodeArduino
Code zum Demonstrieren von Blink auf dem Portenta M7 Core// Code zum Demonstrieren von Blink auf dem Portenta M7 Core // Die Setup-Funktion wird einmal ausgeführt, wenn Sie Reset drücken oder das Boardvoid einschalten. setup() { bootM4(); // Digital-Pin 13 als Ausgang initialisieren. pinMode (LED_RED, OUTPUT);} // die Schleifenfunktion wird immer wieder ausgeführt forevervoid loop () { digitalWrite (LED_RED, HIGH); // schalten Sie die LED ein (HIGH ist der Spannungspegel) Verzögerung (1000); // Warte auf ein zweites DigitalWrite (LED_RED, LOW); // schalten Sie die LED aus, indem Sie die Spannung auf LOW stellen (1000); // warte eine Sekunde}
Schaltpläne
So verbinden Sie die SWD-Pins des Breakout Boards mit dem Segger J-LinkHerstellungsprozess