avr-gcc Speicherbelegung anzeigen lassen

Gast #649633
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
Gast
Hallo Jörg,

vielen Dank. Habe avr-mem.sh gefunden. Da hast du ja auch mitgetippt :)
Wo muss ich das Script jetzt hinkopieren damit das auch tut? /usr/avr/?

Gruß,
Christian
Moderator Persönliche Seite
 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
>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
>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
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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.