mikrocontroller.net

Forum: Compiler & IDEs avr-gdb/objdump: inkonsistente sprungadressen


Autor: Sebastian Meuren (neruem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich bin auf ein weiteres Problem bei meiner avr-gcc installation:


gdb gibt mir folgendes aus, wenn ich die .elf-Datei lade:


(gdb) disassem 0xb8
Dump of assembler code for function .do_clear_bss_start:
0x000000b8 <.do_clear_bss_start+0>:     cpi     r26, 0x27       ; 39
0x000000ba <.do_clear_bss_start+2>:     cpc     r27, r17
0x000000bc <.do_clear_bss_start+4>:     brne    .-8             ;  0xb6 
<.do_clear_bss_loop>
0x000000be <.do_clear_bss_start+6>:     call    0x4002  ;  0x4002 
<lcd_sendstr+24>
0x000000c2 <.do_clear_bss_start+10>:    jmp     0xb000  ;  0xb000 
<vfprintf+958>
End of assembler dump.


dagegen liefert avr-objdump:
/usr/local/avr/bin/avr-objdump -d avr.elf  > test.txt

folgendes ergebnis:

000000b8 <.do_clear_bss_start>:
      b8:  a7 32         cpi  r26, 0x27  ; 39
      ba:  b1 07         cpc  r27, r17
      bc:  e1 f7         brne  .-8        ; 0xb6 <.do_clear_bss_loop>
      be:  0e 94 41 20   call  0x4082  ; 0x4082 <main>
      c2:  0c 94 90 59   jmp  0xb320  ; 0xb320 <_exit>

irgendwie ist das nicht konsistent und der code macht im Debug auch 
nicht das was er soll (-;

hier die eckdaten:

GDB:
GNU gdb 6.7.1
This GDB was configured as "--host=x86_64-unknown-linux-gnu 
--target=avr".

GCC:
Target: avr
Configured with: ../configure --target=avr --prefix=/usr/local/avr 
--enable-languate=c --program-prefix=avr- : (reconfigured) ../configure 
--target=avr --prefix=/usr/local/avr --enable-languate=c 
--program-prefix=avr- --disable-libssp
Thread model: single
gcc version 4.2.3

Kompelieroptionen:
-I/usr/local/avr/avr/include -Wall -g3 -gstabs -O0 -fpack-struct 
-fshort-enums -funsigned-bitfields -mmcu=atmega64 -DF_CPU=1600000UL

Weis da jemand weiter?

vielen Dank schon mal, Sebastian

Autor: Sebastian Meuren (neruem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung, der Fehler lag auf meiner Seite....

avarice hatte den controller einfach falsch programmiert.. (-;

sonderbar nur, dass es das mehrmals hintereinander getan hat...


benutze absofort dann wohl immer -v...


gruesse, Sebastian

Autor: Sebastian Meuren (neruem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ein kleiner Nachtrag:


wenn ich avarice ohne -e benutze, sind programmierfehler reproduzierbar, 
mit -e (fuer erase) funktioniert alles wunderbar....

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

Bewertung
0 lesenswert
nicht lesenswert
Sebastian Meuren wrote:

> wenn ich avarice ohne -e benutze, sind programmierfehler reproduzierbar,
> mit -e (fuer erase) funktioniert alles wunderbar....

Das Problem saß also vor dem Computer...

-p, --program
       Program  the  target.  Binary  filename  must  be specified with
       --file option.
       NOTE: The old behaviour  of  automatically  erasing  the  target
       before  programming  is no longer done. You must explicitly give
       the --erase option for the target to be erased.

Autor: Sebastian Meuren (neruem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke fuer den Hinweis (-:

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.