Débogage du système bi-cœur Arduino Portenta H7 avec Segger J-Link
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino Portenta H7 | 1 |
| Carte d'extension Portenta H7 Breakout Board | 1 |
| Sonde de débogage Segger J-Link | 1 |
| Adaptateur Cortex M Segger | 1 |
Applications et services en ligne
- Arduino IDE
- Microsoft Visual Studio 2017 (ou 2019/2022)
- Visual Micro (extension pour Visual Studio)
Présentation du projet
L'Arduino Portenta H7 offre une puissante architecture bi-cœur : un Cortex-M7 à 480 MHz et un Cortex-M4 à 240 MHz. Les deux cœurs peuvent exécuter des firmwares indépendants et communiquer via la mémoire partagée ou des sémaphores.
Le débogage simultané des deux cœurs nécessite une interface SWD dédiée et un débogueur prenant en charge les sessions multi-cibles. Ce guide montre comment utiliser un Segger J-Link pour se connecter à chaque cœur, configurer l'environnement de développement et exécuter un exemple simple de clignotement démontrant le contrôle indépendant de la LED de chaque cœur.
Configuration matérielle
- Montez la Portenta H7 sur sa carte d'extension (breakout board). La carte expose un connecteur 20 broches de style MIPS qui se connecte aux broches SWD des deux cœurs.
- Fixez un convertisseur 20 broches MIPS sur l'en-tête de la carte d'extension pour séparer les signaux de débogage.
- Câblez le convertisseur vers le Segger J-Link selon le diagramme de brochage ci-dessous. Si vous préférez une solution personnalisée, utilisez des connecteurs au pas de 0,05 pouce et suivez le câblage d'exemple montré sur la seconde image.


Configuration logicielle
- Installez Arduino IDE (téléchargeable sur le site Arduino).
- Installez Microsoft Visual Studio (2017, 2019 ou 2022) et l'extension Visual Micro (instructions complètes sur le site Visual Micro).
- Ajoutez le package Arduino Mbed OS Portenta Boards via l'explorateur Visual Micro ou le gestionnaire de cartes dans l'Arduino IDE.
- Remplacez le pilote USB de l'interface 0 du Segger J-Link par le pilote WinUSB en utilisant Zadig. Une vidéo de démonstration courte est liée ci-dessous.
Passons au code
Préparez deux projets distincts, un pour chaque cœur. Les exemples Blink suivants allument une LED différente sur chaque cœur et peuvent être débogués indépendamment.
Important : Dans le projet M7, appelez bootM4() au début de setup() pour vous assurer que les deux cœurs sont actifs.
Configuration du débogage : Cœur M7
Ouvrez le sketch M7 dans Visual Studio, allez dans Déboguer > Matériel et sélectionnez Segger J-Link Debugger (pas la version NoOpenOCD). Compilez et téléversez le sketch sur le cœur M7.

Configuration du débogage : Cœur M4
Ouvrez le sketch M4, choisissez Déboguer > Matériel, et sélectionnez Segger J-Link Debugger (NoOpenOCD). Compilez et téléversez sur le cœur M4.
Démarrer le débogueur
Lancez d'abord une session de débogage pour le sketch M7 en utilisant Déboguer > Attacher au processus. Répétez la même étape pour le sketch M4. Vous pouvez maintenant définir des points d'arrêt dans l'un ou l'autre projet, mettre en pause, exécuter pas à pas ou continuer indépendamment – chaque cœur répond à ses propres commandes.

Vidéo de démonstration
Regardez une démonstration pas à pas sur YouTube :
Débogage Portenta H7 bi-cœur avec Segger J-Link
Liens utiles
Code
- Code Blink H7 M4
- Code Blink H7 M7
Code Blink H7 M4 (Cœur M4)
// Clignotement sur le cœur M4 de la Portenta
void setup() {
pinMode(LED_BLUE, OUTPUT);
}
void loop() {
digitalWrite(LED_BLUE, HIGH);
delay(1000);
digitalWrite(LED_BLUE, LOW);
delay(1000);
}
Code Blink H7 M7 (Cœur M7)
// Clignotement sur le cœur M7 de la Portenta
void setup() {
bootM4(); // Activer le cœur M4
pinMode(LED_RED, OUTPUT);
}
void loop() {
digitalWrite(LED_RED, HIGH);
delay(1000);
digitalWrite(LED_RED, LOW);
delay(1000);
}
Schémas
Comment connecter les broches SWD sur la Breakout Board au Segger J-Link :

Processus de fabrication
- Arduino lance Portenta H7 : Carte IoT grade industriel débute au CES
- Construire un Spybot Arduino piloté par Bluetooth
- FlickMote : Télécommande IR à gestes pour maison connectée
- TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
- Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
- Solutions d'alimentation optimisées pour projets Arduino
- Morpion sur matrice LED MAX7219 avec boîtier en carton
- Construire un robot quadrupède Arduino intelligent : guide étape par étape