Depurando o Sistema Dual-Core Arduino Portenta H7 com Segger J-Link
Componentes e Materiais
| Arduino Portenta H7 | ×1 |
| Placa Breakout Arduino Portenta H7 | ×1 |
| Sonda de Depuração Segger J-Link | ×1 |
| Adaptador Cortex M Segger | ×1 |
Aplicativos e Serviços Online
- Arduino IDE
- Microsoft Visual Studio 2017/2019/2022
- Visual Micro (extensão para Visual Studio)
Visão Geral do Projeto
O Arduino Portenta H7 oferece uma poderosa arquitetura dual-core: um Cortex-M7 a 480 MHz e um Cortex-M4 a 240 MHz. Os dois núcleos podem executar firmware independentes e comunicar via memória compartilhada ou semáforos.
Depurar ambos os núcleos simultaneamente requer uma interface SWD dedicada e um depurador que suporte sessões multi-target. Neste guia, mostramos como usar um Segger J-Link para conectar a cada núcleo, configurar o ambiente de desenvolvimento, e rodar um exemplo simples de blink que demonstra controle independente do LED de cada núcleo.
Configuração de Hardware
- Monte o Portenta H7 em sua breakout board. A placa expõe um header de 20 pinos estilo MIPS que conecta aos pinos SWD de ambos os núcleos.
- Anexe um conversor MIPS de 20 pinos ao header da breakout para separar os sinais de depuração.
- Conecte o conversor ao Segger J-Link conforme o diagrama de pinout abaixo. Se preferir uma solução personalizada, use conectores de pitch 0.05 polegadas e siga a fiação de exemplo mostrada na segunda imagem.
Configuração de Software
- Instale o Arduino IDE (download em site do Arduino).
- Instale o Microsoft Visual Studio (2017, 2019 ou 2022) e a extensão Visual Micro (instruções completas no site do Visual Micro).
- Adicione o pacote Arduino Mbed OS Portenta Boards via Visual Micro Explorer ou Boards Manager no Arduino IDE.
- Substitua o driver USB na Interface 0 do Segger J-Link pelo driver WinUSB usando Zadig. Um vídeo curto passo a passo está linkado abaixo.
Vamos Codificar
Prepare dois projetos separados, um para cada núcleo. Os seguintes exemplos Blink acendem um LED diferente em cada núcleo e podem ser depurados independentemente.
Importante: No projeto M7, chame bootM4() no início de setup() para garantir que ambos os núcleos estejam ativos.
Configuração de Depuração: Núcleo M7
Abra o sketch M7 no Visual Studio, vá em Debug > Hardware e selecione Segger J-Link Debugger (não a versão NoOpenOCD). Compile e carregue o sketch no núcleo M7.
Configuração de Depuração: Núcleo M4
Abra o sketch M4, escolha Debug > Hardware, e selecione Segger J-Link Debugger (NoOpenOCD). Compile e carregue no núcleo M4.
Iniciar o Depurador
Primeiro inicie uma sessão de depuração para o sketch M7 usando Debug > Attach to Process. Repita o mesmo passo para o sketch M4. Agora você pode definir breakpoints em qualquer projeto, pausar, passo a passo, ou continuar independentemente — cada núcleo responde a seus próprios comandos.
Vídeo Passo a Passo
Assista a uma demonstração passo a passo no YouTube:
Depurando Portenta H7 Dual-Core com Segger J-Link
Links Úteis
Código
Código Blink Núcleo M4
// Blink no Núcleo M4 do 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 no Núcleo M7 do Portenta
void setup() {
bootM4(); // Ativa o núcleo M4
pinMode(LED_RED, OUTPUT);
}
void loop() {
digitalWrite(LED_RED, HIGH);
delay(1000);
digitalWrite(LED_RED, LOW);
delay(1000);
}
Esquemáticos
Como conectar os pinos SWD na Breakout Board ao Segger J-Link:
Processo de manufatura
- Arduino Lança Portenta H7: Placa IoT Industrial‑Grade Estreia na CES
- Construa um Spybot Controlado por Bluetooth com Arduino
- FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
- DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Soluções de Energia Otimizadas para Projetos Arduino
- Jogo da Velha com Arduino, Matriz LED MAX7219 e Caixa de Papelão
- Construa um Robô Quadrúpede Inteligente com Arduino: Guia Passo a Passo
- Volante Joystick Arduino Personalizado para Jogos