mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Dragon, DebugWire und Linux


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
wie sieht es denn eigentlich mit Debugging unter Linux aus? Bisher hab 
ich nur GDB gesehen und hab keine Ahnung wie der funktioniert.

Gibts es etwas annähernd vergleichbares zb zum Source Level Debugging 
via DebugWire im AVR Studio unter Linux?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst den GDB via AVaRICE auf ein JTAG ICE oder einen AVR Dragon
loslassen, damit kann er wahlweise JTAG oder debugWire benutzen.

Der GDB ist auf jeden Fall völlig anders als AVR Studio.  Er kann
manche Dinge nicht, die AVR Studio kann, in anderen Dingen ist er
dagegen haushoch überlegen (bspw. der Darstellung beliebiger
C-Ausdrücke einschließlich typecasts usw.).  Für die Bedienung
gibt's mehr als ein mögliches grafisches Frontend, wobei sich DDD
offenbar allgemeiner Beliebtheit erfreut, oder aber du benutzt die
Integration des GDB in den Editor deiner Wahl, der damit zusammen
dann zu einer IDE wird.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, klingt schonmal gut das es geht. mal schauen ob ich das irgendwie 
hinkriege

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Insight wäre noch eine andere GUI-Variante.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DDD scheint allgemein beliebter zu sein als Insight.  Dass DDD bei
WinAVR nicht dabei ist, liegt insbesondere daran, dass es sich nicht
unter/für Win32 bauen lässt.

Anyway, bevor du irgendwann fragst: größter Schwachpunkt des AVR-GDB
ist im Moment, dass er keine Methode hat, symbolisch auf IO-Register
zuzugreifen.  Ich suche hier noch Ideen, wie man ihm das über die
Debuginformationen aus dem ioXXX.h mit rüberreichen kann.  Das alte
"info io_registers" ist nur für wenige AVRs überhaupt implementiert
worden und ist meiner Meinung nach eher eine miese Krücke (man kann
nur alle IO-Register auf einmal anzeigen), sodass ich es müßig finde,
da weiter dran zu schrauben.  Da man auf alle IO-Register über
Speicheradressen zugreifen kann, sollte eigentlich im GDB alles
vorhanden sein, was man dafür braucht, so man denn die symbolischen
Informationen rüberbekommt.

Derweil kann man sich einfach mit dem x-Kommando behelfen, das ja
eine beliebige Speicherstelle anzeigen kann.  Mein Kollege wickelt
sich darum dann gern einen GDB-Makro für seine am häufigsten benötigten
IO-Register.

Außerdem: der AVR-GDB wurde noch nicht bisher für DWARF-2 angepasst.
Bitte compiliere mit -gstabs statt -gdwarf-2.  Ob -g ohne etwas
DWARF-2 oder stabs erzeugt, ist eine Frage, wer den Compiler beim
Bauen wie konfiguriert hat.  WinAVR hat DWARF-2 als Voreinstellung,
ich habe bei FreeBSD (wegen AVR-GDB's Möglichkeiten) stabs als
Voreinstellung.

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Juhu endlich mal jemand der sich damit auskennt. ;)
thread kaper

Wie arbeite ich eigentlich mit der toolchain wenn ich Assembler 
Programiere?
Hab noch nicht mit C angefangen und wollte mal sehen ob ich mit avarice 
und gdb klarkomme bin aber kläglich gescheitert da ich schlich nicht 
kapiert hab was ich avarice und gdb vorsetzen soll (hex, obj, asm). 
-wiebel

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Assembler kennt auch ein -gstabs, dann erzeugt er selbstständig
line number debugging information.  Debuginformationen zu deinen
Variablen müsstest du allerdings selbst mitbringen.

Autor: Siegward Jäkel (siegward)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte nach einer Methode gesucht, wie ich möglichst komfortabel in 
DDD IO-Register ändern kann und bin bei meiner Recherche auf diesen 
Thread gestoßen.

Ich habe jetzt eine Methode gefunden, die einigermaßen komfortabel ist 
(am Beispiel PORTA mit Adresse 0x3b):

- Im Menü von DDD das Fenster 'Data/Displays' öffnen.
- Den Knopf 'Display...' anklicken.
- '*(char*)0x3b' eintippen und den Knopf 'Display' anklicken.
- Im Fenster 'DDD: Displays' die Zeile mit '*(char*)0x3b' markieren und 
den Knopf 'Set' anklicken.
- Im neuen Fenster 'DDD:Set Value' den neuen Wert eingeben. Mit 'Apply' 
wird er gesetzt.

Das Fenster 'DDD: Displays' kann dann geschlossen werden und das Fenster 
'DDD:Set Value' an eine passende Stelle am Bildschirm positioniert 
werden. Zum Testen kann man damit LEDs an- und ausschalten.

Wenn man so mehrere Ports im Zugriff haben will, stört es natürlich, 
dass die Fenster keine sprechenden Namen haben, sondern nur die 
(dezimale!!!) Adresse. Aber damit kann man wohl leben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.