AVR-Debugwire unter Linux

Also habe ich einen ATtiny88 angeschlossen und programmiere ihn mit dem Dragon AVR über ISP. Ich habe auch die Build-Toolchain mit avrdude und den gnu avr-Tools eingerichtet. Alles funktioniert super.

Jetzt würde ich gerne In-Circuit-Debugging mit dem angekündigten Debugwire machen, der auch mit dem ISP verbunden ist und den der Drache unterstützt. Aber welche Tools verwende ich? Ich sehe, dass es ein avr-gdb gibt, aber es scheint, dass ich eine Art Simulator brauche, aber ich würde gerne In-Circuit auf der echten MCU debuggen. Ist das möglich?

Danke im Voraus.

Ich interessiere mich auch dafür, wie man debugwire tatsächlich verwendet. Ich sehe es immer wieder in den Handbüchern für meine Chips, hatte aber noch keine Gelegenheit, es zu verwenden.

Antworten (2)

Schauen Sie sich Geiz an . Die Manpage hat auch etwas über debugwire zu sagen . Ich weiß aber nicht, ob das gute oder schlechte Nachrichten sein werden.

Sie haben Recht, es scheint wirklich, dass Avarice sowohl das AVR Dragon- als auch das debugWire-Debugging unterstützt. Es gibt jedoch den Nachteil, dass zum Aktivieren des Debuggens mit dem debugWire die Reset-Pin-Sicherung in den debugWire-Modus geändert werden muss, was bedeutet, dass ISP nicht mehr möglich ist und nur die Option bleibt, das Gerät mit Hochspannungsprogrammierung neu zu flashen. :/
Es gibt eine Problemumgehung für dieses Problem: Sie können die Fuses mit debugWire/avarice neu programmieren. Setzen Sie also nach Ihrer Debug-Sitzung einfach die DWEN-Sicherung mit Geiz zurück, und Sie haben ISP zurück.

debugwire aktivieren

aktivieren mit avrdude (Sicherung für attiny88):

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

Zusammenstellung

  • muss mit -ggdb oder großartig (--gdb3) kompiliert werden, scheint aber bei Makros nicht zu helfen
  • keine Optimierungen

    COMPILE = $(GCC_PATH) -ggdb3 -Wall -Wextra $(OPTIMIZATION) -std=gnu11 -flto -mmcu=$(DEVICE) -DF_CPU=$(CLOCK)

Benötige main.hex und main.elf

Debuggen

Geiz anfangen:

avarice -g -w -P attiny88 :4242

dann gdb starten:

avr-gdb main.elf

und verbinden:

target remote localhost:4242

Haltepunkte

nur sw Breakpoints mit debugwire, also wenn nötig Breakpoints verwenden:

asm('break');

Wechseln Sie zurück in den Spi/icsp-Modus

NB. Der VTG/VCC-Pin (2 am Header) muss mit der Chipversorgung verbunden sein, damit dies funktioniert!

avrdude -c dragon_isp -P usb -p attiny88 -v -U hfuse:w:0xdd:m
Das sieht genau richtig aus, aber bitte fügen Sie relevante Befehle in Ihre Antwort ein, bevor der Link heruntergefahren wird.