🛠 Débogage pas à pas : CMSIS-DAP et Arduino Debug Launcher
Objetivos
Salir de Serial.print para depurar: la R4 es la primera UNO con depurador de hardware integrado. El puente USB integrado (HIC) expone una interfaz CMSIS-DAP conectada al SWD del RA4M1, y la extensión oficial Arduino Debug Launcher (VS Code / PlatformIO o IDE 2.x) permite puntos de interrupción, ejecución paso a paso, inspección de variables y memoria, exactamente igual que en un STM32.
Material
- 1 Arduino UNO R4 WiFi + cable USB-C de datos (en el puerto USB-C del lado HIC, el que se usa para programar)
- VS Code con la extensión Arduino Debug Launcher, o el IDE de Arduino 2.x con la funcionalidad de depuración activada
- Un sketch no trivial: una función que calcule, un bucle, una matriz.
Procedimiento
- Instale la extensión Arduino Debug Launcher y el componente de depuración propuesto (OpenOCD/CMSIS-DAP gestionado por la extensión).
- Abra el sketch, coloque un punto de interrupción en una línea de
loop. - Inicie «Start Debugging»: la placa se programa y se detiene en el punto de interrupción.
- Explore: variables locales, globales, pila de llamadas, registros del Cortex-M4, memoria; avance con paso a paso (F10/F11).
// Croquis de test : le bug classique du débordement d'index.
int mesures[8];
int n = 0;
void setup { Serial.begin(115200); }
void loop {
mesures[n] = analogRead(A0); // point d'arrêt ici : surveillez n
n++;
if (n > 8) n = 0; // bug volontaire : devrait etre n >= 8
delay(200);
}
Verificación esperada
La ejecución se detiene en el punto de interrupción; la ventana Variables muestra cómo n aumenta. Al monitorear la matriz, verá la escritura fuera de límites cuando n == 8, el tipo de error invisible con Serial.print. Reanude (F5), modifique la condición, vuelva a programar y verifique de nuevo: este es el ciclo completo de depuración.
Errores frecuentes
- Optimización del compilador: con -O2, algunas variables «desaparecen» o el paso a paso salta líneas; cambie la optimización a -O0 (opción de compilación del IDE) para depurar, y vuelva a activarla para producción.
delaydurante la depuración: el depurador interrumpe el núcleo; el watchdog y el WiFi continúan su funcionamiento en el ESP32-S3, por lo que el estado del sistema no queda congelado como en una simple pausa.- Conectar el cable al puerto USB-C equivocado: la depuración pasa por el puerto conectado al HIC; el otro puerto (USB nativo del RA4M1) no proporciona CMSIS-DAP.
- Confundir depurador y monitor serie: durante una sesión de depuración, el puerto serie suele estar monopolizado por la sesión; use el otro puerto USB para un CDC separado si es necesario.
- Esperar depuración en el ESP32-S3: el depurador solo controla el RA4M1; el ESP32-S3 no es accesible en modo paso a paso por esta vía.
Otros tutoriales para esta placa
- Premier Blink sur la UNO R4 WiFi : la première UNO 32 bits
- Apprivoiser la matrice LED 12x8 intégrée
- Toucher capacitif : touchRead sans composant
- Se connecter au WiFi et lire l'heure NTP (WiFiS3)
- Inclinomètre sur la matrice : l'IMU LSM6DSV16X en I²C
- Serveur web embarqué : piloter la matrice depuis le navigateur
Ejemplos de código para esta placa
clignotante.inoArduinobouton-poussoir.inoArduinodac-analogique.inoArduinoentree-analogique.inoArduinopwm-respiration.inoArduinoservo-balayage.inoArduino