Forum: Compiler & IDEs avr-size


von Thomas Müller (Gast)


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

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


Lesenswert?

Du musst dein Makefile anpassen, Eric Weddington hat den Script
avr-size.sh durch einen eigenen Modus innerhalb von avr-size
selbst ersetzt.

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


Lesenswert?

Quatsch, avr-mem.sh hieß der Script.

von Thomas Müller (Gast)


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

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


Lesenswert?

Nein, avr-mem.sh gibt's ja eben nicht mehr, dafür hat er die Option
-A eingeführt (zu avr-size).

von Axel R. (Gast)


Lesenswert?

ich greif das mal auf:
kann man einfach die avr-mem.sh einer älteren WinAVR-Ausgabe verwenden?
Wenn ja: hat jemand die Datei?

Ich fand die Ausgabe in Prozent usw. wesentlich anschaulicher.

Danke
AxelR.

von Markus _. (markush)


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.

von Axel R. (Gast)


Angehängte Dateien:

Lesenswert?

Da war ich jetzt beim rüberkopieren etwas schneller.. ;-))

Ich habe die avr-mem.sh noch gefunden und einfach nach C:\WinAVR\bin 
kopiert.
geht wieder.

Jetzt probiere ich Deinen Tip aus.

Danke

AxelR.

von Axel R. (Gast)


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 --------

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


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...

von Axel R. (Gast)


Lesenswert?

http://www.kieltech.de/~ufechner/avr-mem-3.zip

alles klar!

vielen Dank für die Unterstützung, ist nicht überall selbstverständlich.
Gerade wenn man "neu" mit WinAVR dabei ist, hilft das sehr!

Vielen Dank/Grüße
AxelR.

von Florian (Gast)


Lesenswert?

Weil ich's gerade selber brauchte, bin ich hier d'rüber gestolpert.
Vielleicht gibt's ja schon eine neue Version der *.sh, aber dieser fehlt 
noch der ATmege644. Deshalb dies ergänzen

nach:
1
# Table of AVR memory sizes.
2
case "$2" in

dies:
1
"atmega644")  PROGMAX=${AVR64K}; DATAMAX=${AVR4K}; EEPROMMAX=${AVR2K};;

von Oliver (Gast)


Lesenswert?

Mit der Version WinAVR 20090313 ändert man im Makefile:
1
#ELFSIZE = $(SIZE) -A $(TARGET).elf
2
ELFSIZE = $(SIZE) -A $(TARGET).elf; $(SIZE) -C --mcu=$(MCU) $(TARGET).elf

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.