mikrocontroller.net

Forum: Compiler & IDEs AVR Programme unter Linux Debuggen


Autor: Sebastian Mazur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Kann mir bitte jemand sagen, wie ich meine AVR-Assembler Programme
unter Linux debuggen kann???

Es gibt ja den simulavr der mit Verbindung mit gdb bzw. avr-gdb
funktioniert, nur das Problem liegt darin, daß er keine .hex sondern
nur .out Dateien akzeptiert.
Mit AVR-GCC kann ich ja auch solche erzeugen und das klappt mit
simularvr auch gut, aber assembler, die ich ausprobierthabe (avra,
tavrasm, gavrasm) wollen keine .out Dateien erzeugen :-(
AVRStudio krieg ich mit Wine auch nicht am laufen...
Muß ich wirklich Windows installieren um meine Programme zu debuggen ?

Danke für die Aufmerksamkeit
Sebastian

Autor: Sebastian Mazur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, daß mein Beitrag verschoben wurde...
So habe ich auch Antwort auf meine Frage gefunden :-D
Und zwar, nur falls das jemanden interessiert avr_simulator, gibt es
bei sourceforge, scheint ganz gut zu sein,
werde es jetzt mal Testen,
danke nochmals, auch fur keine Antworten :-)

Gruß Sebastian

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und was haben deine Tests so gezeigt?
oder bist du noch dabei?

Autor: Sebastian Mazur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Henning,
Auf den ersten Blick war ich positiv von dem Programm überrascht,
die einfachsten Sachen hat es gut simuliert (Register setzen und
lesen)
Aber dann habe ich mir gedacht, daß ich zu doof bin einen Timer mit
Interrupts zu Programmieren, weil der Timer zwar lief, aber keine
Interrupts ausgelöst hat :-(
Habe mein Timerprogramm heute auf einer Windoof Kiste unter Studio
laufenlassen und es klappt super, also liegt es an avr_simulator,
vieleicht stimmt was nicht mit den Vektoradressen oder so, schade
eigentlich, ich habe schon gedacht, ich habe endlich meinen Simulator
gefunden....
Kann auch sein, daß ich irgendwo einen Fehler bei der Installation
gemacht habe, das kann ich mir aber nicht so vorstellen,
vielleicht gibt es jemanden, der das Programm kennt und auch was
dazusagen kann?
Achso, ich habe den ATMEGA 8 simuliert, heute versuche ich es mit dem
16  vieleicht geht es dann
Gruß Sebastian

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstens sollte klassisches simulavr auch ihex-Dateien lesen können, da
die zugrundeliegende libbfd das kann.  Die Option -F suggeriert
zumindest, dass man ein Dateiformat angeben kann, eventuell
funktioniert sogar eine automatische Erkennung.

Zweitens muss man simulavr eigentlich gar keine Datei mitgeben, wenn
man ihn mit dem GDB nehmen will, da man das Programm auch stets aus
dem GDB in den Simulator laden kann.

GDB wiederum basiert auch auf libbfd und kann damit auch ihex-Dateien
lesen.  Allerdings fehlt ihm dann jegliche Information über den Inhalt
des zu debuggenden Targets, da ihex keinerlei Symboltabellen mit sich
bringt.  Aber funktionieren tut's:

% avr-gdb -q delaytest.hex
(no debugging symbols found)
(gdb) info file
Local exec file:
        `/home/joerg/src/avr/test/delaytest.hex', file type ihex.
        Entry point: 0x0
        0x00000000 - 0x00001758 is .sec1

(Hier könnte man mit "target remote" zum Simulator verbinden und mit
"load" das Image in den Simulator pumpen.)

Inwiefern das auch mit dem Nachfolger simulavrxx tut, hab' ich jetzt
keine Ahnung.  Meines Wissens kann man den auch noch nicht unter
Windows compilieren lassen.

Autor: Sebastian Mazur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg

Danke für Deine Antwort, aber genauso habe ich es gemacht, also den
simulavr als gdb server process gestartet mit der Angabe von dem
Device
und dann in den gdb selber die .hex Datei geladen.
Nur wenn ich damit den simulavr füttern will krieg ich folgende
Fehlermeldung:
Memory access error while loading section .sec1.

und wenn ich den simulavr mit der option -F hex starte, kommt das:
Only the bin file format is currently implemented. Sorry.

Also doch keine hex Dateien, leider

Gruß Sebastian

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du das denn so [1] gemacht?

[1] http://www.mikrocontroller.net/articles/AVR-Simulation

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, sieht so aus, als würde simulavr nur binary files unterstützen.

Was machst du denn mit dem GDB?  Das funktioniert hier OK:

% simulavr -g -d atmega128 &
[2] 90418
Simulating a atmega128 device.

MESSAGE: file decoder.c: line 3872: generating opcode lookup_table
MESSAGE: file main.c: line 413: Simulating clock frequency of 8000000
Hz
Waiting on port 1212 for gdb client to connect...

% avr-gdb -q delaytest.hex
(no debugging symbols found)
(gdb) targ rem :1212
Remote debugging using :1212
Connection opened by host 127.0.0.1, port -3538.
0x00000000 in ?? ()
(gdb) load
Loading section .sec1, size 0x1758 lma 0x0
Start address 0x0, load size 5976
Transfer rate: 47808 bits in <1 sec, 192 bytes/write.

Autor: Sebastian Mazur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
@OldBug
Ja genauso mache ich das, allerdings nicht mit .elf sondern mit .hex,
weil mein Assembler keine .elf oder .out Dateien erzeugt.

@Jörg

Den gdb starte ich genauso, wie Du auch mit dem target und load
allerdings kommt dann die Fehlermeldung mit dem Speicher(sehe meinen
letzten Beitrag).
Vielleicht liegt das an der simulavr Version?
Ich benutze die Originalversion von Debian sid, und zwar 0.1.2.2, hast
Du eine andere? Soll ich eventuell was anderes ziehen und selber
Kompilieren?
Bei meinen C Programmen funktioniert der gdb auch ohne Probleme, wird
dann wohl an simulavr liegen, oder?

Gruß Sebastian

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe exakt dasselbe Problem mit simulavr 0.1.2.2-1. Wenn sich hier
irgend eine Lösung ergeben haben sollte dann wäre ich für eine Info
sehr dankbar :-)

Autor: Armin Voetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs jetzt mit tavrasm und anderen Formaten (generic hex, obj, bin)
versucht, das Ergebnis ist das selbe. Hab auch einen anderen Simulator
(AVR-sim von der Uni Magdeburg) probiert, dort gibts überhaupt einen
Segfault.

avrora ist ein anderer Simulator, damit hab ich aber noch gar nix
zuwegegebracht

Hmmm, bleibt mir "wieder" nur die Windoofs Software?

Grüße aus Wien
Armin

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

Bewertung
0 lesenswert
nicht lesenswert
Hast du mal simulavrxx probiert?  Ich selbst noch nicht, aber es
halt allgemein gute Kritiken.

Autor: Johan Dams (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello.

(My German writing is bad, so thats why in English, sorry)

You should try an older version of gdb with simulavr. For me, 6.0.0
works fine but 6.3 and 6.2 do not work.
Also the 'info io_registers' works with older versions, but not with
newer ones.


Hope this helps, even though this thread is already 2 months old.

Best regards,
Johan

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

Bewertung
0 lesenswert
nicht lesenswert
> You should try an older version of gdb with simulavr. For me, 6.0.0
> works fine but 6.3 and 6.2 do not work.

I don't have any trouble with GDB 6.3.

> Also the 'info io_registers' works with older versions, but not
with
> newer ones.

Patch can be found here:

http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/p...

I'm afraid I forgot to file that as a bug report to GDB so far.

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

Bewertung
0 lesenswert
nicht lesenswert
> I don't have any trouble with GDB 6.3.

Ermmm, mind that second patch there in my FreeBSD port as well:

http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/p...

Autor: Johan Dams (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello.

I applied the patch to gdb6.3, and the 'info io_registers' is
working.
The debugging seems to work, with registers and local variables
changing values.
However, I still get a mamory access error when loading the file:

(gdb) target remote :1212
Remote debugging using :1212
0x00000000 in __vectors ()
(gdb) load
Loading section .text, size 0x7a lma 0x0
Memory access error while loading section .text.
(gdb)

Any ideas?


Best regads,
Johan

Autor: Johan Dams (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GDB 6.2 does seem to work fine...


Best regards,
Johan

Autor: Johan Dams (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello.

I've been trying simulavr and simulavrxx in conjunction with avr-gdb
over the past couple of days.
The results with the older simulavr have been really nice. However I
don't seem to find a way to use input ports on it (PINA, etc..).

Simulavrxx seems to be better when it comes to attaching external
virtual hardware, but I miss the simulavr-disp tool, and the 'info
io_registers' GDB command on this one.

Am I missing something here? Should the 'info io_registers' work with
simulavrxx?
How do I connect something (e.g. switch) to an input on the old
simulavr?

Maybe someone here has experience with this and could help me.


Best regards,
Johan

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

Bewertung
0 lesenswert
nicht lesenswert
Quite possible that simulavrxx doesn't handle the `info io_register'
command; this command indeed needs to be handled by the backend GDB
connects to.  I only know that AVaRICE also doesn't handle the IO
registers for all target MCUs.

Remember though that you can still query a single IO register quite
fine by dereferencing its address explicitly.  So

(gdb) x/32x 0x800020

will display the values of the first 32 IO registers, and

(gdb) p/x *(char *)0x800039

will display the value of PINA, for example.  Remember also that you
can use GDB-internal variables, so e.g. the above could also be
written by

(gdb) set $pina=(char *)0x800039
...
(gdb) p/x *$pina

or also

(gdb) display *$pina

so it will display you the contents of PINA each time the debugger
stops.

It seems simulavrxx might need a helping hand in some areas...  It's
probably best to discuss things like that one with the authors on
their mailing list:

http://lists.nongnu.org/mailman/listinfo/simulavr-devel

Autor: Johan Dams (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello.

Thanks for the information. I have subscribed to their mailinglist,
maybe I can help them out with some stuff.

By the way, in case anyone is interested, the reason why I could not
read any data into a port (e.g., data = PINB) is because the external
device hooks to ports have been disabled in the emulavr main.c
Re-enabeling these inputs makes this work again.


Best regards,
Johan

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.