Tabla de contenido:

Cómo usar un depurador en un ESP32: 11 pasos (con imágenes)
Cómo usar un depurador en un ESP32: 11 pasos (con imágenes)

Video: Cómo usar un depurador en un ESP32: 11 pasos (con imágenes)

Video: Cómo usar un depurador en un ESP32: 11 pasos (con imágenes)
Video: Programar ESP32 con Arduino IDE 2024, Mes de julio
Anonim
Cómo usar un depurador en un ESP32
Cómo usar un depurador en un ESP32

¿Alguna vez ha querido echar un vistazo dentro de su código para ver por qué se comporta de la manera que es? Tradicionalmente, en los proyectos ESP32, habría tenido que agregar una declaración de impresión sin fin para tratar de averiguar qué estaba pasando, ¡pero hay una manera mejor!

Un depurador es una forma de ver lo que está sucediendo en secciones particulares de su código y probar diferentes valores de variable sin volver a compilar su código, generalmente esto no es algo que esté disponible para nosotros en proyectos integrados, pero en esta guía le mostraré cómo usarlo en un ESP32.

En esta guía, le mostraré cómo configurar el hardware, configurar el software y mostrar un ejemplo simple de cómo usar el depurador.

Suministros

  • ESP-Prog: esta es la placa necesaria para la depuración

    • Exacto que compré *
    • $ 5 Más barato, pero no lo he probado *
  • Un ESP32 que rompe el pin 12, 13, 14, 15

    • Pluma de Adafruit Huzzah32
    • D1 Mini ESP32 *
  • [OPCIONAL] Escudo de depuración que vendo en Tindie

    • Pluma Huzzah32
    • D1 Mini ESP32

* = Enlace de afiliado

Paso 1: ¡Mira el video

Image
Image

Tengo un video sobre este tema si quieres verlo.

En mi canal suelo hacer videos basados en ESP8266 y ESP32, así que si estás interesado en ellos, ¡compruébalo!

Paso 2: Hardware: piezas y cableado

Hardware: piezas y cableado
Hardware: piezas y cableado
Hardware: piezas y cableado
Hardware: piezas y cableado
Hardware: piezas y cableado
Hardware: piezas y cableado

Para usar el depurador, solo necesita un ESP-Prog y casi cualquier placa ESP32 (enlaces a estos en un paso anterior)

ESP-Prog:

El ESP-Prog es una placa diseñada por espressif, los fabricantes de los chips ESP32 y ESP8266. Se conecta a los pines JTAG del ESP32 para permitirnos usar el depurador. También se puede usar para programar placas ESP32, pero no lo cubriré aquí.

Tablero ESP32:

Puede usar básicamente cualquier placa ESP32 para esto una vez que rompa los pines JTAG, que son 12, 13, 14 y 15. Probé una placa Adafruit feather Huzzah32 y una D1 Mini 32 y ambas funcionaron bien.

Tenga en cuenta que puede usar los pines JTAG en su boceto con el depurador, por ejemplo, el LED incorporado de la placa Huzzah32 está en el pin 13, por lo que no puede usarlo durante la depuración.

Alambrado:

Para conectar el ESP-Prog al ESP32, simplemente use la guía de cableado como se muestra en la imagen de arriba. Consulte el diagrama de cableado de su placa ESP32 si no ve inmediatamente los pines apropiados, ya que a veces usan un esquema de nomenclatura diferente.

Escudos de depuración:

Estos son opcionales, pero vendo algunos protectores en Tindie para el Huzzah32 y el D1 Mini 32 que hacen que conectar el ESP-Prog sea realmente simple, rompe los pines apropiados a un conector IDC que puede usar un cable plano para conectar directamente entre ellos. el escudo y el ESP-Prog

Paso 3: Hardware - Configuración del controlador

Hardware: configuración del controlador
Hardware: configuración del controlador
Hardware: configuración del controlador
Hardware: configuración del controlador
Hardware: configuración del controlador
Hardware: configuración del controlador

Para utilizar ESP-prog para la depuración, necesitamos instalar los controladores adecuados para ello. PlatformIO proporciona algunos pasos para eso aquí, pero seguiré los pasos de Windows en esta guía.

  1. Descargue e instale los controladores FTDI para el ESP-Prog desde aquí, desplácese hacia la derecha para descargar la versión "ejecutable de instalación" para que sea más fácil.
  2. Descarga e instala la herramienta Zadig desde aquí, esto nos permite instalar un controlador genérico necesario para la depuración.
  3. Con el ESP-Prog enchufado, abre Zadig
  4. En la aplicación Zadig, en "Opciones", haga clic en "Mostrar todos los dispositivos"
  5. Ahora se completará el menú desplegable de Zadig, seleccione la opción "Dual RS232-HS (Interfaz 0)". ¡Asegúrese de que sea la interfaz 0 que seleccione!
  6. A la derecha de la flecha verde, debe seleccionarse "WinUSB", luego haga clic en "Reemplazar controlador"

Cuando haya terminado, sus controladores deberían estar configurados para su uso.

Nota: Si cambia el puerto USB que está usando para el ESP-Prog, es posible que deba repetir los pasos 3 a 6 nuevamente. Si obtiene un error como se muestra en la imagen de arriba durante la depuración, debe repetir los pasos.

Paso 4: Software: instalación de PlatformIO

Software: instalación de PlatformIO
Software: instalación de PlatformIO
Software: instalación de PlatformIO
Software: instalación de PlatformIO
Software: instalación de PlatformIO
Software: instalación de PlatformIO

PlatformIO es un IDE para desarrollar con varios marcos integrados diferentes, incluido el ecosistema Arduino. Es más complicado de usar que algo como el IDE de Arduino, pero es muy poderoso y tiene algunas características que el IDE de Arduino echa mucho de menos, como el autocompletado.

Es necesario que PlatformIO utilice el depurador. Si ya está familiarizado con PlatformIO, no dude en avanzar un par de pasos.

  • Descargue e instale Visual Studio Code (VS Code) desde el enlace proporcionado en el sitio web PlatformIO.org
  • Abra VS Code y abra el menú de extensiones, el botón está resaltado en la imagen de arriba
  • Escriba "platformio" en la búsqueda, selecciónelo y haga clic en instalar.

Paso 5: Software: uso de PlatformIO

Software: uso de PlatformIO
Software: uso de PlatformIO
Software: uso de PlatformIO
Software: uso de PlatformIO
Software: uso de PlatformIO
Software: uso de PlatformIO

Usar PlatformIO es un poco diferente a usar el IDE de Arudino, por lo que en este paso solo cubriremos los conceptos básicos para ejecutar un ejemplo en una placa.

Abriendo un ejemplo:

  1. Haga clic en el botón Inicio en la barra de herramientas de PlatformIO (como se muestra en la imagen)
  2. Haga clic en el botón "Ejemplos de proyectos"
  3. Seleccione el ejemplo "Arduino-blink" en la sección Espressif 32

Esto abrirá un proyecto de muestra de parpadeo. El diseño de un PlatformIO es bastante diferente en comparación con un proyecto Arduino, así que repasemos los conceptos básicos.

¿Dónde está el código?

El código de su proyecto se almacenará en la carpeta "src", para el ejemplo de blink verá un archivo "blink.cpp", este archivo es el mismo que su archivo de boceto (.ino) en un proyecto Arduino.

¿Cómo configuro mi placa?

Las configuraciones para su proyecto se guardan dentro de un archivo "platformio.ini" en su proyecto. En realidad, esta es una de mis cosas favoritas de PlatformIO en comparación con el IDE de Arduino, nunca tuvo sentido para mí que la configuración de la placa no estuviera vinculada a los bocetos.

El ejemplo.ini contiene definiciones para varios tableros diferentes, pero para simplificar las cosas, eliminemos las dos definiciones inferiores.

¿Dónde configuro mi puerto COM?

PlatformIO en realidad intentará automáticamente encontrar el puerto COM correcto para usar, por lo que puede salirse con la suya sin configurar nada para esto. Pero si tiene varios puertos COM, lo que hará cuando use el depurador, creo que tiene sentido establecer el específico que necesita. Puede ver los diferentes dispositivos que tiene haciendo clic en la sección "Dispositivos" en la pestaña de inicio, y puede establecer cuál es su ESP32 en el "platformio.ini" agregando una configuración "upload_port".

¿Cómo subo mi código?

Haga clic en el botón Cargar (el icono es una flecha que apunta a la derecha) y debería compilar y cargar el código. Ahora debería tener un LED parpadeante en su tablero.

Paso 6: Depuración: ¡Potencial piel de plátano

Depuración: ¡Piel de plátano potencial!
Depuración: ¡Piel de plátano potencial!
Depuración: ¡Piel de plátano potencial!
Depuración: ¡Piel de plátano potencial!
Depuración: ¡Piel de plátano potencial!
Depuración: ¡Piel de plátano potencial!

Esto es algo que me sorprendió cuando estaba preparando esto y espero que se solucione cuando lo pruebes, pero pensé que era importante irme de aquí.

Al momento de hacer esta guía, la última versión de PlatformIO es 4.3.0 y tiene un error que se relaciona con la posibilidad de depurar. Afortunadamente, podemos actualizar a la última versión de desarrollo con bastante facilidad, lo que resuelve el problema.

Verifique en la página de inicio la versión del núcleo de PlatformIO, si es "4.3.0", realice los siguientes pasos.

  1. En la barra de herramientas de PlatformIO, haga clic en el icono de terminal
  2. En el tipo de terminal: pio upgrade --dev
  3. El código RestartVS y PlatfromIO deben actualizarse

Paso 7: depuración: configuración

Depuración: configuración
Depuración: configuración

Necesitamos editar el archivo "PlatofrmIO.ini" para habilitar la depuración, solo necesitamos agregarle dos cosas.

debug_tool = esp-prog

Esto establece la herramienta de depuración que estamos usando.

debug_init_break = configuración de tbreak

Este es un truco que aprendimos del video de Andress Spiess sobre la depuración en el ESP32. Le dice al depurador que se detenga en la configuración de nuestra aplicación.

Paso 8: depuración: inicio de la depuración

Depuración: inicio de la depuración
Depuración: inicio de la depuración
Depuración: inicio de la depuración
Depuración: inicio de la depuración
Depuración: inicio de la depuración
Depuración: inicio de la depuración
Depuración: inicio de la depuración
Depuración: inicio de la depuración

Antes de adentrarnos en él, haremos un pequeño cambio en el boceto que facilitará la demostración de lo que puede hacer con la depuración.

  1. Cree una nueva variable, "int delayTime = 1000;" fuera de cualquier método, esto lo convertirá en una variable global.
  2. Reemplace el número dentro de las llamadas de retardo en el bucle con esta nueva variable: delay (delayTime);

Sube el código a la placa una vez más, luego para comenzar a depurar, en la barra de herramientas, haz clic en "Ejecutar" y luego en "Iniciar depuración"

Verá que las cosas se mueven en la ventana de la terminal, pero incluso cuando eso indique que fue un éxito, si hace clic en la "Consola de depuración", verá que todavía está funcionando, tardará unos segundos en finalizar.

Si todo salió como se esperaba, verá que el depurador se detiene al comienzo de la configuración.

Paso 9: depuración: uso básico

Depuración: uso básico
Depuración: uso básico
Depuración: uso básico
Depuración: uso básico
Depuración: uso básico
Depuración: uso básico
Depuración: uso básico
Depuración: uso básico

Cubramos algunos de los conceptos básicos de lo que puede hacer con el depurador

Creación de puntos de interrupción:

Un punto de interrupción es un punto de su código donde desea que el depurador se detenga. Para crear un punto de interrupción, haga clic a la izquierda del número de línea. Como demostración, agregue un punto de interrupción a la primera línea en el método de bucle.

Navegación de punto de interrupción:

Para moverse entre un punto de interrupción o pasar a la siguiente línea de código, puede usar las herramientas que aparecerán en la parte superior de la pantalla. Presione el botón "continuar" (parece un botón de reproducción) para mover el punto de interrupción que acabamos de crear dentro del bucle.

Relojes variables:

Los relojes variables le permiten monitorear el valor de las variables cuando el depurador se detiene en un punto de interrupción. Para agregar un nuevo reloj variable, puede hacer clic en el icono + y luego escribir el nombre de la variable. Como demostración, escriba la variable que agregamos en el paso anterior "delayTime"

Visor de variables:

También puede ver todas las variables y sus valores que están disponibles en su punto de interrupción actual. Para hacer una demostración de esto, si miras en la sección "Global", deberías encontrar la variable "delayTime".

Editar el valor de las variables:

También puede editar los valores de las variables y tendrá un efecto inmediato en el comportamiento de sus códigos. Para demostrar esto, haga clic en la variable delayTime en la sección Visor de variables y cambie el valor a "100". Para mostrar este funcionamiento, desactive el punto de interrupción dentro del bucle haciendo clic nuevamente a la izquierda del número de línea. Presione el botón Continuar en la barra de navegación del punto de interrupción. El LED de su ESP32 ahora debería parpadear mucho más rápido que antes.

Paso 10: solución de problemas

Solución de problemas
Solución de problemas

Durante mis pruebas, descubrí que algunas veces no podía cargar al ESP32 mientras estaba conectado al ESP-prog, y no podía descifrar un patrón de por qué sucedía esto, porque la mayoría de las veces podía cargar sin cualquier problema. Descubrí que podía simplemente desconectar el ESP32 y el ESP-Prog, cargar el código en el ESP32 y luego volver a conectarlos y funcionaría bien.

Paso 11: Conclusión

Creo que esta es una herramienta realmente genial para agregar a la caja de herramientas para ayudar a descubrir qué está sucediendo dentro de su proyecto.

Me encantaría saber si esto te resulta útil. Házmelo saber en los comentarios a continuación, o únete a mí y a un grupo de otros creadores en mi servidor de Discord, donde podemos discutir este tema o cualquier otro fabricante relacionado que tengas, la gente es realmente útil allí, por lo que es un gran lugar para pasar el rato. fuera.

También me gustaría agradecer enormemente a mis patrocinadores de Github que me ayudan a respaldar lo que hago. Realmente lo aprecio. Si no lo sabe, Github está emparejando patrocinios durante el primer año, por lo que si realiza un patrocinio, lo igualarán al 100% durante los próximos meses. ¡Gracias por leer!

Recomendado: