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.


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.


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

1
Dies sieht genau richtig aus, aber bitte fügen Sie relevante Befehle in Ihre Antwort ein, bevor der Link unterbrochen wird.
— Dmitry Grigoryev
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.