avr-size

Gast #411885
Lesenswert?

Hallo,

seit Installation der WinAVR-Version 2006-04-21 ist mir aufgefallen,
dass nach einer Compilierung keine prozentuale Ausgabe mehr von
"avr-size" erfolgt. Gibt es eine Möglichkeit (z.B. im Makefile),
diese "Füllstandsanzeige" einzustellen oder zu aktivieren?

Viele Grüße
Thomas
Gast #411888
Lesenswert?

Hallo Jörg,

vielen Dank für die schnelle Antwort. Ich habe gerade im Makefile
folgende Zeilen gefunden:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Display size of file.
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) -A $(TARGET).elf
AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)

sizebefore:
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE);
$(ELFSIZE); \
$(AVRMEM) 2>/dev/null; echo; fi

sizeafter:
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER);
$(ELFSIZE); \
$(AVRMEM) 2>/dev/null; echo; fi
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Daraufhin habe ich auf meinem Rechner nach "avr-mem.sh" gesucht, um
die Konfiguration zu ändern. Ich finde die Datei aber nicht.

Kannst du (Könnt ihr) mir noch ein wenig auf die Sprünge helfen, wo die
Änderungen gemacht werden müssen?

Viele Grüße
Thomas
#441252
Lesenswert?

Hi,

lad dir mal das hier: 
http://alt.kreatives-chaos.com/download/avr-sizex.exe

Und binde es wie folgt ein (alles geklaut von 
http://alt.kreatives-chaos.com):

Um das Tool einzubinden muss man erstmal die Datei avr-sizex.exe in das 
\bin Verzeichniss von WinAVR kopieren. Außerdem sind noch zwei kleinere 
Änderungen im Makefile vorzunehmen. Man sucht folgende Zeilen im 
Makefile und fügt dann die rot makierten hinzu:

# Display size of file.
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) -A $(TARGET).elf
SIZEX = avr-sizex --mcu=$(MCU) $(TARGET).elf

sizebefore:
  @echo
  @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); 
$(ELFSIZE); echo; fi


sizeafter:
  @echo
  @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); 
$(ELFSIZE); echo; fi ;$(SIZEX)

Und das wars auch schon.
Gast #441282
Lesenswert?

avr-sizex kennt den Atmega168 nicht, schade :-(

Meine Ausgabe sieht nun so aus:
Stimmt das?
avr-size -A sagt:

>>TOTAL 6923
[EDIT]
section.data und section.text sind 3208 ;-)
[/EDIT]

aber avr-mem.sh sagt:

>>Program:    3208 bytes (39.2% Full)


Creating Symbol Table: i2c_test.sym
avr-nm -n i2c_test.elf > i2c_test.sym

Size after:
i2c_test.elf  :
section           size      addr
.data               34   8388864
.text             3174         0
.bss                74   8388898
.noinit              0   8388972
.eeprom              0   8454144
.stab              876         0
.stabstr           132         0
.debug_aranges      20         0
.debug_pubnames    242         0
.debug_info        865         0
.debug_abbrev      353         0
.debug_line        461         0
.debug_str         692         0
Total             6923


AVR Memory Usage:
-----------------
Device: atmega168

Program:    3208 bytes (39.2% Full)
(.text + .data + .bootloader)

Data:        108 bytes (10.5% Full)
(.data + .bss + .noinit)


-------- end --------
Moderator Persönliche Seite #441459
Lesenswert?

Naja, "total" ist eben, was sein Name verspricht: die Summe aller
Zahlen darüber.  Eine ziemlich sinnlose Angabe folglich -- alle
Debugsymbole werden ja auch mitgezählt.

Du müsstest dir aus irgendeinem Thread bei avrfreaks.net mal das
seinerzeit reparierte avr-mem.sh beschaffen: deine Version leidet
noch unter dem Bug, dass der ATmega168 aus Versehen wie ein
ATmega88 behandelt wird.  Du kannst natürlich auch gleich Eric
Weddington nerven, dass er in der nächsten Version wieder avr-mem.sh
mit ausliefert.  Ich finde seinen Hack mit avr-size -A ziemlich
gruselig.  Hab' ich ihm auch schon geschrieben, aber ich bin kein
WinAVR-Nutzer.  Wenn ihm seine Nutzer ebenfalls bescheinigen, dass
sie das vorherige avr-mem.sh praktischer fanden, vielleicht überzeugt
ihn das ja eher...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren