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


von Sebastian M. (neruem)


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

von Sebastian M. (neruem)


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

von Sebastian M. (neruem)


Lesenswert?

Noch ein kleiner Nachtrag:


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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Sebastian M. (neruem)


Lesenswert?

Danke fuer den Hinweis (-:

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.