Debugging des Arduino Portenta H7 Dual-Core-Systems mit Segger J-Link
Komponenten und Zubehör
| Arduino Portenta H7 | × | 1 |
| Arduino Portenta H7 Breakout Board | × | 1 |
| Segger J-Link Debug Probe | × | 1 |
| Segger Cortex M Adapter | × | 1 |
Apps und Online-Dienste
- Arduino IDE
- Microsoft Visual Studio 2017 (oder 2019/2022)
- Visual Micro Extension
Projektübersicht
Der Arduino Portenta H7 liefert eine leistungsstarke Dual-Core-Architektur: Ein Cortex-M7 mit 480 MHz und ein Cortex-M4 mit 240 MHz. Die beiden Kerne können unabhängige Firmware ausführen und über gemeinsamen Speicher oder Semaphoren kommunizieren.
Das gleichzeitige Debuggen beider Kerne erfordert eine dedizierte SWD-Schnittstelle und einen Debugger, der Multi-Target-Sessions unterstützt. In dieser Anleitung zeigen wir, wie man einen Segger J-Link verwendet, um sich mit jedem Kern zu verbinden, die Entwicklungsumgebung einzurichten und ein einfaches Blink-Beispiel auszuführen, das die unabhängige Steuerung der LED jedes Kerns demonstriert.
Hardware-Setup
- Montieren Sie den Portenta H7 auf seinem Breakout Board. Das Board exponiert einen 20-poligen MIPS-Style-Header, der mit den SWD-Pins beider Kerne verbunden ist.
- Befestigen Sie einen 20-poligen MIPS-Konverter am Breakout-Header, um die Debug-Signale zu trennen.
- Verbinden Sie den Konverter gemäß dem Pinout-Diagramm unten mit dem Segger J-Link. Wenn Sie eine benutzerdefinierte Lösung bevorzugen, verwenden Sie 0,05-Zoll-Pitch-Connectoren und folgen Sie der im zweiten Bild gezeigten Beispiel-Verdrahtung.
Software-Setup
- Installieren Sie die Arduino IDE (Download von der Arduino-Website).
- Installieren Sie Microsoft Visual Studio (2017, 2019 oder 2022) und die Visual Micro Extension (vollständige Anweisungen auf der Visual Micro Website).
- Fügen Sie das Arduino Mbed OS Portenta Boards Paket über den Visual Micro Explorer oder den Boards Manager in der Arduino IDE hinzu.
- Ersetzen Sie den USB-Treiber auf Interface 0 des Segger J-Link mit dem WinUSB-Treiber mithilfe von Zadig. Ein kurzes Walkthrough-Video ist unten verlinkt.
Lass uns coden
Bereiten Sie zwei separate Projekte vor, eines für jeden Kern. Die folgenden Blink-Beispiele lassen eine unterschiedliche LED auf jedem Kern leuchten und können unabhängig debuggt werden.
Wichtig: Im M7-Projekt rufen Sie bootM4() zu Beginn von setup() auf, um sicherzustellen, dass beide Kerne aktiv sind.
Debug-Setup: M7-Kern
Öffnen Sie den M7-Sketch in Visual Studio, gehen Sie zu Debug > Hardware und wählen Sie Segger J-Link Debugger (nicht die NoOpenOCD-Version). Bauen Sie und laden Sie den Sketch auf den M7-Kern hoch.
Debug-Setup: M4-Kern
Öffnen Sie den M4-Sketch, wählen Sie Debug > Hardware und wählen Sie Segger J-Link Debugger (NoOpenOCD). Bauen Sie und laden Sie auf den M4-Kern hoch.
Debugger starten
Starten Sie zuerst eine Debugging-Session für den M7-Sketch mit Debug > An Prozess anhängen. Wiederholen Sie den gleichen Schritt für den M4-Sketch. Sie können nun Breakpoints in jedem Projekt setzen, anhalten, schrittweise ausführen oder fortsetzen – unabhängig voneinander; jeder Kern reagiert auf seine eigenen Befehle.
Walkthrough-Video
Sehen Sie sich eine Schritt-für-Schritt-Demonstration auf YouTube an:
Debugging Portenta H7 Dual-Core mit Segger J-Link
Nützliche Links
Code
- H7 M4 Blink Code
- H7 M7 Blink Code
H7 M4 Blink Code
// Blink auf Portenta M4 Kern
void setup() {
pinMode(LED_BLUE, OUTPUT);
}
void loop() {
digitalWrite(LED_BLUE, HIGH);
delay(1000);
digitalWrite(LED_BLUE, LOW);
delay(1000);
}
H7 M7 Blink Code
// Blink auf Portenta M7 Kern
void setup() {
bootM4(); // M4 Kern aktivieren
pinMode(LED_RED, OUTPUT);
}
void loop() {
digitalWrite(LED_RED, HIGH);
delay(1000);
digitalWrite(LED_RED, LOW);
delay(1000);
}
Schaltpläne
Wie man die SWD-Pins am Breakout Board mit dem Segger J-Link verbindet:
Herstellungsprozess
- Arduino launcht Portenta H7: Industrial-Grade IoT Board Debutiert auf CES
- Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
- FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
- DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Optimierte Stromversorgungslösungen für Arduino-Projekte
- Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
- Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung
- DIY Arduino Lenkrad / Joystick für Rennspiele – USB-HID-Umbau