Cable de depuración AVR en Linux

Entonces, conecté un ATtiny88 y lo estoy programando con Dragon AVR usando ISP. También configuré la cadena de herramientas de compilación, usando avrdude, y las herramientas gnu avr. Todo está funcionando muy bien.

Ahora me gustaría hacer una depuración en el circuito usando el cable de depuración anunciado que también está conectado al ISP y que es compatible con el dragón. Pero, ¿qué herramientas uso? Veo que hay un avr-gdb, pero parece que necesito algún tipo de simulador, sin embargo, me gustaría depurar en circuito en la MCU real. es posible?

Gracias por adelantado.

También estoy interesado en cómo se usa realmente debugwire. Lo sigo viendo en los manuales de mis chips, pero aún no he tenido ocasión de utilizarlo.

Respuestas (2)

Echa un vistazo a la avaricia . Su página de manual también tiene algo que decir sobre debugwire . Aunque no sé si serán buenas o malas noticias.

Tienes razón, realmente parece que avarice es compatible con la depuración de AVR Dragon y debugWire. Sin embargo, existe el inconveniente de que, para habilitar la depuración con debugWire, el fusible del pin de restablecimiento debe cambiarse al modo debugWire, lo que significa que el ISP ya no es posible, dejando solo la opción de volver a actualizar el dispositivo mediante programación de alto voltaje. :/
Hay una solución para este problema: puede reprogramar los fusibles usando debugWire/avarice. Entonces, después de su sesión de depuración, simplemente reinicie el fusible DWEN con avaricia y tendrá de vuelta al ISP.

habilitar cable de depuración

habilite con avrdude (fusible para attiny88):

avrdude -c dragon_isp -P usb -p attiny88 -v -U hfuse:w:0xd9:m

Compilacion

  • debe compilarse con -ggdb o great (--gdb3) pero no parece ayudar con las macros
  • sin optimizaciones

    COMPILAR = $(GCC_PATH) -ggdb3 -Wall -Wextra $(OPTIMIZACIÓN) -std=gnu11 -flto -mmcu=$(DISPOSITIVO) -DF_CPU=$(RELOJ)

necesita main.hex y main.elf

depuración

empezar la avaricia:

avarice -g -w -P attiny88 :4242

luego inicie gdb:

avr-gdb main.elf

y conectar:

target remote localhost:4242

puntos de interrupción

solo cambie los puntos de interrupción con debugwire, por lo que si necesita puntos de interrupción, use:

asm('break');

volver al modo spi/icsp

NÓTESE BIEN. ¡El pin VTG/VCC (2 en el encabezado) debe estar conectado al suministro del chip para que esto funcione!

avrdude -c dragon_isp -P usb -p attiny88 -v -U hfuse:w:0xdd:m
Esto parece correcto, pero incluya comandos relevantes en su respuesta antes de que el enlace se caiga.