Depuración del sistema dual-core Arduino Portenta H7 con Segger J-Link
Componentes y suministros
| Arduino Portenta H7 | ×1 |
| Placa Breakout Arduino Portenta H7 | ×1 |
| Sonda de depuración Segger J-Link | ×1 |
| Adaptador Cortex M Segger | ×1 |
Aplicaciones y servicios online
- Arduino IDE
- Microsoft Visual Studio 2017
- Visual Micro
Descripción del proyecto
El Arduino Portenta H7 ofrece una potente arquitectura dual-core: un Cortex-M7 a 480 MHz y un Cortex-M4 a 240 MHz. Los dos núcleos pueden ejecutar firmware independiente y comunicarse mediante memoria compartida o semáforos.
Depurar ambos núcleos simultáneamente requiere una interfaz SWD dedicada y un depurador que soporte sesiones multi-target. En esta guía mostramos cómo usar un Segger J-Link para conectar a cada núcleo, configurar el entorno de desarrollo, y ejecutar un ejemplo blink simple que demuestra el control independiente del LED de cada núcleo.
Configuración de hardware
- Monta el Portenta H7 en su placa breakout. La placa expone un header de 20 pines estilo MIPS que conecta a los pines SWD de ambos núcleos.
- Conecta un conversor MIPS de 20 pines al header del breakout para separar las señales de depuración.
- Cablea el conversor al Segger J-Link según el diagrama de pinout abajo. Si prefieres una solución personalizada, usa conectores de paso 0.05 pulgadas y sigue el cableado de ejemplo mostrado en la segunda imagen.


Configuración de software
- Instala el Arduino IDE (descarga desde sitio web Arduino).
- Instala Microsoft Visual Studio (2017, 2019 o 2022) y la extensión Visual Micro (instrucciones completas en el sitio de Visual Micro).
- Añade el paquete Arduino Mbed OS Portenta Boards vía Visual Micro Explorer o el Board Manager en Arduino IDE.
- Reemplaza el driver USB en la Interfaz 0 del Segger J-Link con el driver WinUSB usando Zadig. Un video tutorial corto está enlazado abajo.
Vamos a programar
Prepara dos proyectos separados, uno para cada núcleo. Los siguientes ejemplos Blink encienden un LED diferente en cada núcleo y pueden depurarse independientemente.
Importante: En el proyecto M7 llama a bootM4() al inicio de setup() para asegurar que ambos núcleos estén activos.
Configuración de depuración: Núcleo M7
Abre el sketch M7 en Visual Studio, ve a Debug > Hardware y selecciona Segger J-Link Debugger (no la versión NoOpenOCD). Compila y sube el sketch al núcleo M7.

Configuración de depuración: Núcleo M4
Abre el sketch M4, elige Debug > Hardware, y selecciona Segger J-Link Debugger (NoOpenOCD). Compila y sube al núcleo M4.
Iniciar el depurador
Primero lanza una sesión de depuración para el sketch M7 usando Debug > Attach to Process. Repite el mismo paso para el sketch M4. Ahora puedes establecer puntos de ruptura en cualquiera de los proyectos, pausar, paso a paso, o continuar independientemente —cada núcleo responde a sus propios comandos.

Video tutorial
Mira una demostración paso a paso en YouTube:
Depuración Portenta H7 Dual-Core con Segger J-Link
Enlaces útiles
Código
Código Blink Núcleo M4
// Blink en el núcleo M4 del Portenta
void setup() {
pinMode(LED_BLUE, OUTPUT);
}
void loop() {
digitalWrite(LED_BLUE, HIGH);
delay(1000);
digitalWrite(LED_BLUE, LOW);
delay(1000);
}
Código Blink Núcleo M7
// Blink en el núcleo M7 del Portenta
void setup() {
bootM4(); // Activar el núcleo M4
pinMode(LED_RED, OUTPUT);
}
void loop() {
digitalWrite(LED_RED, HIGH);
delay(1000);
digitalWrite(LED_RED, LOW);
delay(1000);
}
Esquemáticos
Cómo conectar los pines SWD en la Breakout Board al Segger J-Link:

Proceso de manufactura
- Construye un Spybot controlado por Bluetooth con Arduino
- FlickMote: Mando IR por gestos para Smart Home
- TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
- Construye un volante joystick personalizado con Arduino para gaming
- Construye una Máquina CNC Totalmente Funcional con Arduino Nano R3
- Arduino lanza Portenta H7: Board IoT industrial‑grade debuta en CES