avr-gcc Speicherbelegung anzeigen lassen

Gast #649633
Lesenswert?

Hallo,

ist es möglich beim avr-gcc die Speicherbelegung nach dem Kompilieren 
anzeigen zu lassen?

Bisher steht nur z.B.:
1
Size after:
2
main.elf  :
3
section    size      addr
4
.text      1132         0
5
.data        16   8388704
6
.bss         34   8388720
7
.noinit       0   8388754
8
.eeprom       0   8454144
9
.stab      4776         0
10
.stabstr   2918         0
11
Total      8876
12

13
-------- end --------

Es wäre doch interessant zu wissen, zu wieviel % der Controller nun 
voll/leer ist.
Ich glaube das schon mal irgendwo gesehen zu haben, finde es aber leider 
nicht mehr :-/
Kann man das mit "nur" einer Einstellung im Makefile machen, oder 
braucht man da ein separates Programm?

Gruß,
Christian

Linux avr-gcc (GCC) 4.1.0
"Standard-Makefile" by Eric B. Weddington, Jörg Wunsch
Moderator Persönliche Seite #649694
Lesenswert?

 CH wrote:

> Da hast du ja auch mitgetippt :)

Naja, eher Input für Eric geliefert, wenn er nicht weiter kam.  Keine
Ahnung, ist zu lange her.

> Wo muss ich das Script jetzt hinkopieren damit das auch tut? /usr/avr/?

Irgendwohin, sodass es in ${PATH} auffindbar ist.  Den Aufruf musst
du dir schon selbst in dein Makefile noch reinschmieden.
Gast #649710
Lesenswert?

>Irgendwohin, sodass es in ${PATH} auffindbar ist.
Könntest du das bitte etwas genauer spezifizieren? Ist damit der 
Projektpfad gemeint?

Momentan habe ich das Script im Projektordner abgelegt. Wenn ich es 
manuell aufrufe (./avr-mem.sh main.elf atmega32) funktioniert es 
einwandfrei.
Der Aufruf mit $(AVRMEM); (-> AVRMEM = avr-mem.sh $(TARGET).elf $(MCU) ) 
aus dem Makefile heraus liefert jedoch "sh: avr-mem.sh: not found". Ich 
schließe daraus, dass ich es falsch abgelegt habe - nur wohin?

Vergeblich versucht habe ich auch schon nach:
/usr/avr/bin/
/usr/lib/gcc/avr/4.1.0/

Gruß,
Christian
Gast #649721
Lesenswert?

>echo $PATH
ahh, vielen Dank - wieder was gelernt!

So, avr-mem lässt sich nun vom Makefile aus aufrufen, jedoch:
1
avr-mem.sh main.elf atmega32
2
sh: Size: not found

Das Makefile spricht : "SIZE = avr-size".

Ne Idee, was da noch sein könnte?

Gruß,
Christian
#649846
Lesenswert?

So, nun läuft's. Das Script lief mit zu wenig Rechten und blieb 
anscheinend irgendwo hängen...

Danke an Jörg für deine Unterstützung!


Für alle mit gleichem Problem hier eine kleine Zusammenfassung :)

1) avr-mem.sh-Script z.B. von http://www.kieltech.de/uweswiki/AVR_2dGCC 
downloaden
1
Linux-version: avr-mem.sh.gz (http://www.kieltech.de/~ufechner/avr-mem.sh.gz)

2) Script irgendwohin entpacken/kopieren, sodass es in ${PATH} 
auffindbar ist
1
echo $PATH

3) Script mit Rechten "ausstatten" (WICHTIG!)
1
sudo chmod +x avr-mem.sh

4) Aufruf aus dem Makefile:
1
# Display size of file.
2
AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
3

4
sizeafter:
5

6
  @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
7

8
  $(AVRMEM) 2>/dev/null; echo; fi


---fertig---


Nun sollte die Ausgabe zum Beispiel so aussehen:
1
Size after:
2
main.elf  :
3
section    size      addr
4
.text      1086         0
5
.data        16   8388704
6
.bss         39   8388720
7
.noinit       0   8388759
8
.eeprom       0   8454144
9
.stab      4632         0
10
.stabstr   2770         0
11
Total      8543
12

13

14
AVR Memory Usage:
15
-----------------
16
Device: atmega32
17

18
Program:    1102 bytes (3,4% Full)
19
(.text + .data + .bootloader)
20

21
Data:         55 bytes (2,7% Full)
22
(.data + .bss + .noinit)
23

24

25
-------- end --------


Ähnlicher Beitrag für Windows-Mühlen mit WinAVR:
Beitrag "Re: avr-size"


Vielleicht hilft's ja dem Einen oder Anderen.


Gruß,
Christian

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