mikrocontroller.net

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


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen!

Beim compilieren eines Programmes unter <avr-gcc.exe (GCC) 4.1.1 (WinAVR 
20070122)> erhalte ich folgende Ausgabe:
Size after:
main.elf  :
section           size      addr
.text             2994         0
.data                8   8388704
.bss                69   8388712
.stab              876         0
.stabstr           132         0
.debug_aranges      32         0
.debug_pubnames    140         0
.debug_info        913         0
.debug_abbrev      326         0
.debug_line       1078         0
.debug_frame        80         0
.debug_str         516         0
.debug_loc         234         0
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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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):

# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
  @echo
  @echo $(MSG_FLASH) $@
  $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@

OBJCOPY (und andere Tools) ist weiter oben im Makefile in etwa so 
definiert:

# Define programs and commands.
SHELL = sh
CC = avr-gcc
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump

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

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.