AVR-Debugwire unter Linux

7

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

Jetzt möchte ich das In-Circuit-Debugging mit dem angekündigten Debugwire durchführen, der ebenfalls mit dem ISP verbunden ist und den der Drache unterstützt. Aber welche Tools benutze ich? Ich sehe, dass es eine avr-gdb gibt, aber es scheint, dass ich eine Art Simulator brauche, aber ich möchte In-Circuit auf der realen MCU debuggen. Ist das möglich?

Danke im Voraus.

bjarkef
quelle
1
Ich bin auch daran interessiert, wie man Debugwire tatsächlich benutzt. Ich sehe es immer wieder in den Handbüchern für meine Chips, hatte aber noch keine Gelegenheit, es zu verwenden.
Vicatcu

Antworten:

2

Schauen Sie sich Geiz an . Die Manpage hat auch etwas über Debugwire zu sagen . Ich weiß allerdings nicht, ob das gute oder schlechte Nachrichten sind.

XTL
quelle
1
Sie haben Recht, es scheint wirklich, dass Geiz 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 im DebugWire-Modus geändert werden muss, was bedeutet, dass der ISP nicht mehr möglich ist und nur die Möglichkeit besteht, das Gerät mithilfe der Hochspannungsprogrammierung erneut zu starten. : /
Bjarkef
4
Für dieses Problem gibt es eine Problemumgehung: Sie können die Sicherungen mit debugWire / avarice neu programmieren. Setzen Sie nach Ihrer Debug-Sitzung einfach die DWEN-Sicherung mit Geiz zurück und Sie haben den ISP zurück.
markus_b
1

Debugwire aktivieren

Mit avrdude aktivieren (Sicherung für attiny88):

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

Zusammenstellung

  • muss mit -ggdb oder great (--gdb3) kompiliert werden, scheint aber bei Makros nicht zu helfen
  • Keine Optimierungen

    COMPILE = $ (GCC_PATH) -ggdb3 -Wall -Wextra $ (OPTIMIERUNG) -std = gnu11 -flto -mmcu = $ (GERÄT) -DF_CPU = $ (CLOCK)

brauche main.hex und main.elf

Debuggen

Geiz starten:

avarice -g -w -P attiny88 :4242

dann starte gdb:

avr-gdb main.elf

und verbinden:

target remote localhost:4242

Haltepunkte

Nur SW-Haltepunkte mit Debugwire. Verwenden Sie daher bei Bedarf Haltepunkte:

asm('break');

Wechseln Sie zurück in den SPI / ICSP-Modus

NB. Der VTG / VCC-Pin (2 am Header) muss an die Chipversorgung angeschlossen werden, damit dies funktioniert!

avrdude -c dragon_isp -P usb -p attiny88 -v -U hfuse:w:0xdd:m
Matt Venn
quelle
1
Dies sieht genau richtig aus, aber bitte fügen Sie relevante Befehle in Ihre Antwort ein, bevor der Link unterbrochen wird.
Dmitry Grigoryev