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

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.

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.