Forum: Mikrocontroller und Digitale Elektronik Debug-Informationen beim Kompilieren unter WinAVR


von Daniel (Gast)


Lesenswert?

Hallo Zusammen!

Beim compilieren eines Programmes unter <avr-gcc.exe (GCC) 4.1.1 (WinAVR 
20070122)> erhalte ich folgende Ausgabe:
1
Size after:
2
main.elf  :
3
section           size      addr
4
.text             2994         0
5
.data                8   8388704
6
.bss                69   8388712
7
.stab              876         0
8
.stabstr           132         0
9
.debug_aranges      32         0
10
.debug_pubnames    140         0
11
.debug_info        913         0
12
.debug_abbrev      326         0
13
.debug_line       1078         0
14
.debug_frame        80         0
15
.debug_str         516         0
16
.debug_loc         234         0
17
Total             7398

Wenn ich das richtig verstehe, werden knapp 4kb mit Debuginformationen 
erstellt. Werden diese auch beim Hochladen des Hex-files mit in den 
Kontroller übertragen und beanspruchen Speicherplatz? Wenn ja: Wie kann 
ich die Erstellung von Debug-Informationen deaktivieren? In der 
makefile-Datei habe ich keine entsprechenden Möglichkeiten gefunden - 
liegt das Problem vielleicht daran, dass mein makefile ein template von 
2005 ist, ich aber eine relativ aktuelle Version von WinAVR nutze?

Danke schonmal für Eure Hinweise/Hilfe/etc.

Daniel

von Stefan B. (stefan) Benutzerseite


Lesenswert?

No Panic!

Beim Vorbereiten des HEX-Files für den Programmer strippt das 
avr-objcopy Tool die Debuginformationen weg.

Schau im Makefile, wie die Regel für das Erstellen des HEX-Files ist. 
Die Regel findest du in einem Abschnitt, der so ähnlich aussieht (hier 
in einem "modernen" Makefile):
1
# Create final output files (.hex, .eep) from ELF output file.
2
%.hex: %.elf
3
  @echo
4
  @echo $(MSG_FLASH) $@
5
  $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@

OBJCOPY (und andere Tools) ist weiter oben im Makefile in etwa so 
definiert:
1
# Define programs and commands.
2
SHELL = sh
3
CC = avr-gcc
4
OBJCOPY = avr-objcopy
5
OBJDUMP = avr-objdump

Wenn sowas nicht vorhanden ist, hänge das fragliche Makefile an, dann 
kann man mehr sagen.

von Daniel (Gast)


Lesenswert?

Vielen Dank für die Informationen. Die genannten Regeln fand ich wie 
beschrieben in meinem makefile, d.h. es scheint doch nicht die älteste 
Version zu sein.

Und wer lesen kann, ist klar im Vorteil... Der Programmer (in meinem 
Fall Avr-Osp II) gibt den Bereich an, in den er das Hex-File schreibt. 
Tja, und die angegebene Addresse bzw. des Dezimal-Äquivalents entspricht 
der Programmgröße ohne Debug-Informationen.

Anyway... Vielen Dank für die schnelle Hilfe.

Daniel

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.