Depuración de doble núcleo Portenta H7
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Aplicaciones y servicios en línea
| ||||
| ||||
|
Acerca de este proyecto
El Arduino Portenta H7 cuenta con una amplia variedad de características y la capacidad de ejecutar su código en dos núcleos separados, que también pueden comunicarse entre sí.
Todos tenemos problemas con nuestros proyectos de vez en cuando, así que aquí mostramos cómo puede usar un Segger JLink para depurar el código que se ejecuta en ambos núcleos, ¡al mismo tiempo!
Configuración de hardware
Una vez que tenga su Portenta H7 montado en la placa de ruptura, deberá conectar su convertidor MIPS de 20 pines para romper los pines de depuración.
Luego, puede conectar su convertidor al Segger J-Link como se muestra en las imágenes a continuación.
Si tiene los conectores de paso correcto (0.05 "), también puede conectar su propio conector como se muestra en la segunda imagen:
Configuración del software
Suponemos que ya ha instalado el IDE de Arduino en su máquina (si no lo descarga aquí).
Luego instale Visual Studio (2017/2019/2022) y Visual Micro Extension, con instrucciones completas disponibles aquí.
También necesitará instalar el paquete de placa para placas Arduino Mbed OS Portenta desde Visual Micro Explorer (o desde Boards Manager en Arduino IDE).
Deberá reemplazar el controlador USB en la interfaz 0 de su Segger J-Link usando la herramienta Zadig.exe (vea el video en la parte inferior para un recorrido).
¡Vamos a codificar!
Ahora necesitamos configurar un proyecto separado, uno para cada núcleo de nuestra placa Portenta. El código adjunto es un ejemplo simple de Blink, donde cada núcleo parpadea con un LED de diferente color. Para la depuración, configure cada núcleo en una instancia separada de Visual Studio.
No olvide asegurarse de llamar a la función bootM4 () en su proyecto M7 Core para asegurarse de que ambos núcleos se estén ejecutando.
Configuración de depuración:M7 Core
Abra su M7 Core Sketch y seleccione Depurar> Hardware y Segger J-Link Debugger ( NO la "versión NoOpenOCD)
Construya y cargue su boceto de M7 en el núcleo de M7 en este punto.
Configuración del software:M4 Core
Abra su Sketch y seleccione Depurar> Hardware y el Depurador Segger J-Link (NoOpenOCD)
Cree y cargue su M4 Sketch en el núcleo de M4 en este momento.
Iniciar depurador
Primero comience a depurar usando el boceto de M7 Core usando "Depurar> Adjuntar al proceso".
Luego, comience a depurar usando el boceto de M4 Core usando "Depurar> Adjuntar al proceso".
Ahora debería poder agregar un punto de interrupción a cualquiera de los bocetos y observar cómo el depurador se detiene en él ... ¡¡y cada núcleo puede detenerse / avanzar / continuar de forma independiente !!
Video tutorial
Vea un tutorial de este proceso a continuación en YouTube ....
Enlaces útiles
Documentación + Diagrama de cableado
Placa de conexión Portenta
Segger JLink
Código
- Código intermitente H7 M4
- Código intermitente H7 M5
Código intermitente H7 M4 Arduino
Código para demostrar Blink en el Portenta M4 Core// Código para demostrar Blink en el Portenta M4 Core // la función de configuración se ejecuta una vez al presionar reiniciar o encender la placa. producción. pinMode (LED_BLUE, OUTPUT);} // la función de bucle se ejecuta una y otra vez forevervoid loop () {digitalWrite (LED_BLUE, HIGH); // enciende el LED (ALTO es el nivel de voltaje) delay (1000); // espera una segunda escritura digital (LED_BLUE, LOW); // apaga el LED haciendo que el voltaje sea BAJO retardo (1000); // espera un segundo}
Código intermitente H7 M5 Arduino
Código para demostrar Blink en el Portenta M7 Core// Código para demostrar Blink en el Portenta M7 Core // la función de configuración se ejecuta una vez cuando presiona reiniciar o enciende el boardvoid setup () {bootM4 (); // inicializa el pin digital 13 como salida. pinMode (LED_RED, OUTPUT);} // la función de bucle se ejecuta una y otra vez forevervoid loop () {digitalWrite (LED_RED, HIGH); // enciende el LED (ALTO es el nivel de voltaje) delay (1000); // espera una segunda escritura digital (LED_RED, LOW); // apaga el LED haciendo que el voltaje sea BAJO retardo (1000); // espera un segundo}
Esquemas
Cómo conectar los pines SWD en la placa de conexión al Segger J-LinkProceso de manufactura