Depurar Arduino con Arduino

Como todo lector de La-Tecnologia sabe, y nos dice en cada momento en los comentarios, agregar un Arduino a su proyecto lo hará dos veces más genial. Pero, ¿qué pasa si, al agregar Arduino a su proyecto, tiene un problema y necesita depurar el código? ¿Y si pudieras usar segundo Arduino para depurar el primero? Eso llevaría su proyecto a dos Arduinos, ¡instantáneamente haciéndolo cuatro veces más impresionante que antes de comenzar! ¿Quién podría decir no a ganancias tan exponenciales?

Depurar ATTiny85

No. [Wayne Holder], eso es seguro. Viene para informarnos sobre un proyecto en el que ha estado trabajando durante algún tiempo, lo que le permite depurar la ejecución de código en un Arduino con un segundo Arduino. De hecho, el chip de destino podría ser incluso otro microcontrolador de la serie AVR como el ATTiny85. Con su software, una vez puede recorrer el código, ver y modificar valores en la memoria, establecer puntos de interrupción e incluso desensamblar el código. No todo está funcionando todavía, pero lo que tiene hasta ahora es muy impresionante.

El truco consiste en aprovechar una función conocida como "debugWIRE", que se incluye en muchos microcontroladores AVR. Desafortunadamente, la documentación sobre esta función es difícil de conseguir, pero con un poco de trabajo [Wayne] logró averiguar cómo funciona la mayor parte y crear un Arduino Sketch que permite al usuario interactuar con el chip de destino a través de un sistema de menú simple sobre el monitor en serie, similar al Bus Pirate.

[Wayne] Ingrese muchos detalles en su sitio web y en el video incluido después de la pausa, que muestra muchas de las características en las que ha trabajado hasta ahora en su software contra ATTiny85. Si pasa mucho tiempo trabajando en proyectos AVR, esto parece algo que quizás desee mantener instalado en un Arduino en su caja de herramientas para el futuro.

La depuración de proyectos de microcontroladores puede suponer un gran ahorro cuando su código se ejecuta en hardware real, pero a menudo se necesita un poco de piratería para comenzar.

  • It'sThatIdiotAgain dice:

    Veré su depuración de un humilde AVR de 8 bits con otro AVR y lo levantaré depurando ARM STM32 con ARM STM32

    http://www.stm32duino.com/viewforum.php?f=37

    Encuesta de magia negra, stlinkv1 & 2, Jlink, etc.

    Son 32 bits a la mitad, por lo que seguramente debería ser 32 ^ 2 veces mejor.

    • cik dice:

      Sin mencionar que un clon chino ST-Link típico cuesta ~ $ 2 y viene listo para funcionar (incluidos los cables de salto).

      • Jii dice:

        Sería bueno si esto pudiera agregarse a USBASP como otro modo.

  • Jacobo dice:

    ¿Abogados de pistas?
    Esto es muy bueno, ya que la única forma de hacerlo antes era desenchufar el ICE del atmel, junto con sus costosos cables. Y eso parece funcionar con AVR studio, y desafortunadamente utilizo la cadena de herramientas gcc / avrdude.

    • Marcos dice:

      El AVR Dragon cuesta mucho menos y también admite varias interfaces de programación y depuración. Por supuesto, el Arduino es incluso más barato.

      No me gustaba tener que deshabilitar un ISP cada vez que quería comenzar a depurar con Debugwire. Sin embargo, no estoy seguro de si esto es necesario para todos los dispositivos con Debugwire.

      • z80avrproject dice:

        Sí, SPI debe estar deshabilitado cuando DEBUGWIRE está habilitado. El problema es que en algunas partes, como el ATmega48 / 88/168/328, a veces DEBUGWIRE y SPI se apagan y no hay forma de comunicarse con el AVR en la programación en serie de bajo voltaje. Luego, debe recurrir al modo HVPP para restablecer los fusibles a un estado saludable. Vi que sucedió lo mismo en el ATtiny25 / 45/85, que luego debe usar el modo HVSP para restablecer los fusibles. En los casos en los que DEBUGWIRE todavía está habilitado y SPI no, AVRDUDE puede cambiar temporalmente los fusibles para habilitarlos y programarlos en el modo SPI, pero es temporal, por lo que primero debe configurar correctamente los fusibles.

        Siempre me gustó el AVR DRAGON y no era demasiado caro comprarlo a US $ 60. Tuve la suerte de conseguir un segundo DRAGON gratis en un taller de ATMEL. Su cableado semipermanente para HVPP para el ATmega48 / 88/168/328, enchufes, cabezales y cables.

        Personalmente prefiero usar partes con la interfaz JTAG para depurar (ATmega2560, AT90USB1286, ATmega32, etc.) porque esa interfaz nunca me falló. Sin embargo, me deja con 4 pines analógicos (ADC0 a ADC3) que no puedo usar durante la depuración del código. Suspiro.

        Veo MICROCHIP vendiéndose en el ATATMEL-ICE con un 50% de descuento para el "juego completo". A la mitad de $ 130, gastas los mismos $ 60 que gastarías en DRAGON, y también tiene un buen estuche y cables. $ 50, que es menos que AVR DRAGON.

        Paz y bendiciones.

  • Steven13 dice:

    “De hecho, el chip de destino podría ser incluso otro microcontrolador de la serie AVR como ATTiny85. "
    ¡QUEMAD A LOS HEREJES!

  • Ostraco dice:

    "Como todo lector de La-Tecnologia sabe, y nos dice en cada momento en los comentarios, agregar un Arduino a su proyecto lo hará dos veces más genial".

    Esos 555 proyectos serán mucho mejores.

    • mohawkspock dice:

      Bonificaciones si puede depurar Arduino con 555.

      • Lennart dice:

        O depurar 555 con 555.;)

        • Miseria dice:

          Puedo purgar una hormiga con 555. O alambre, suela de mis zapatos, o incluso solo mis dedos desnudos.

          (C:

  • olduino dice:

    Esto es realmente genial, gracias. Tengo un dragón AVR y tenía una atmósfera dentro y fuera del modo de depuración con un estudio avr, pero estaba ansioso y confundido todo el tiempo. esto es mucho más accesible. De hecho, hace que toda la programación del ISP sea mucho más clara. Definitivamente jugaré con él, así que lo tengo en mi caja de herramientas cuando lo necesito.

  • Jac Goudsmit (@JacGoudsmit) dice:

    Yo diría que si agregar Arduino duplica la frialdad, agregar dos Arduino multiplica la frialdad por 2 a la potencia de 2.

    (Cogeré mi abrigo).

  • Wayne Holder dice:

    Publiqué un nuevo artículo de 3 sobre mi proyecto de depuración, junto con un nuevo código y un video de descripción general. El nuevo código ahora puede depurar Arduino UNO corriendo a 16 MHz y también incluye algunos errores y mejoras.

    https://sites.google.com/site/wayneholder/debugwire3
    url = https://youtu.be/F1202b0l5D
    Wayne

    • Disminuir dice:

      Solo quería decir que estaba muy emocionado cuando vi esta publicación por primera vez. He usado bastante el boceto de ArduinoISP, aunque tengo una versión antigua de puerto serie del AVR ISP. Conseguir un programador y un depurador en uno es algo que esperaba trabajar en mí mismo algún día, pero tenía demasiadas otras cosas en las que ocupar mi tiempo. ¡Buen trabajo al armar esto Wayne!

      Descargué el boceto, conecté ATTiny45 y lo probé. Me puse a programar DWEN pero cuando traté de ingresar al depurador, el Arduino pareció bloquearse. Simplemente no pude hacer que reaccionara a ninguna entrada después de ingresar al depurador, lo que significa que tampoco pude apagar DWEN. Después de un poco de prueba, noté que el problema es que su boceto está esperando que la clave de entrada (o "enviar" en el monitor serial Arduino) genere " r n" en la consola, que parece no estar en Linux. Después de cambiar el boceto para aceptar " r" _o_ " n" como el final del comando, funciona perfectamente. También agregué un eoon de cada carácter recibido para reaccionar un poco mientras escribía y agregué " r n" a las líneas en el menú de comandos de depuración, como aparece en una tecla en mi terminal con solo " n".

      ¡De todos modos, mantener el buen trabajo! ¿Puedo contactarlos para enviar algunos parches? También agregué los indicadores LED de frecuencia cardíaca / programa / error del boceto de ArduinoISP, porque cuando se trata de luces intermitentes, más es más, ¿verdad? Sin embargo, publicaré esto como un parche separado.

Matías Jiménez
Matías Jiménez

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *