¿Cómo depuro un Arduino Uno con gdb en una PC con Linux?

¿Cómo depuro (paso único del código fuente) un Arduino Uno con gdb en una PC con Linux? Tenga en cuenta que no me gusta usar AVR Studio en Wine o VirtualBox.

Pregunta 1: Conexión física

¿Cómo y qué conecto a la placa Uno? Mi conjetura es que dado que la placa Uno está poblada con un ATmega328, ¿debería estar disponible el código fuente de un solo paso? También supongo que puedo usar un AVR JTAGICE mkII o un AVR Dragon sobre el encabezado ICSP.

Pregunta 2: servidor GDB

Luego noté que hay algunos proyectos como AVARICE que parecen proporcionar una función jtag a gdb, pero ¿puede haber otros proyectos?

Pregunta 3: ¿Dónde está el duende?

Y si lo pongo en marcha, ¿dónde oculta el IDE de Arduino la salida generada como el archivo elf con símbolos de depuración (debería haber uno)? ¿O necesito generar un Makefile clásico que solo use las librerías de Ardino?

Traté de encontrar información sobre qué/cómo usar, pero solo encontré esas pistas que me dijeron lo que podía hacer. ¿Puede alguien empujarme en la dirección correcta?

Respuestas (3)

Puede encontrar los artefactos del compilador manteniendo presionada la tecla Mayús al hacer clic en el botón de compilación en la versión anterior del IDE (leer < 1.0). En las versiones más recientes (leer> = 1.0) hay una opción en el cuadro de diálogo de preferencias para mostrar la salida detallada durante la compilación (ver captura de pantalla). Con la salida detallada, la carpeta donde terminan todas las salidas del compilador se imprime (repetidamente) en la consola. Eso debería ayudarte a empezar al menos.

captura de pantalla arduino muestra salida detallada durante la compilación

En una nota al margen, hubo todo tipo de conversaciones sobre este tema en la lista de desarrolladores de Arduino a principios de junio de 2012 y alguien publicó un anuncio en la lista de desarrolladores de Arduino sobre una forma mejorada/integrada de depuración de GDB para Arduino, pero no he investigado mucho más lejos. Supongo que el proyecto se llama VisualMicro (?). Parece que se creó como un complemento de Visual Studio, por lo que podría no ser útil para usted en un entorno Linux, y además está en versión beta, pero dejaré que usted decida.

Habilité "Habilitar salida detallada durante la compilación" y usan algo como /tmp/build3652385594823436592.tmp/ como su directorio de compilación, también el elfo se creó con el indicador -g, por lo que debería contener los símbolos de depuración. Eso significa que he encontrado los artefactos de compilación, ahora solo necesito que el jtag funcione.

El simulador de procesador Simavr AVR ahora proporciona un buen servidor GDB para la depuración de firmware AVR, incluido Arduino. Puede usarlo solo (requiere que escriba una pequeña aplicación de consola para su configuración de hardware particular) o desde el entorno GUI de Simutron , donde puede definir su configuración de hardware a través de la captura esquemática.

Nota: con estas herramientas no tienes una conexión física ya que todo el hardware es simulado.

Esto se responde en un artículo de una revista de Linux al que se hace referencia en una pregunta similar: Jtag debugging AVR .

Básicamente, al usar avr-gdb y simulavr en tándem, puede ejecutar su software en una selección de microcontroladores AVR a través del simulador, mientras usa GDB para recorrer y observar el código en ejecución.

¡Espero que esto ayude!