Programm/RAM Belegung AVR

OP #5310848
Lesenswert?
• ▲
▼
Hallo,

ich würde gerne den Speicherbedarf von Programm und RAM meines AVRs 
wissen, bevor ich diesen flashe um ggf. den Flashvorgang vor start 
abbrechen zu können. (z.B. wenn das Programm zu groß ist).

Ich habe gesehen, dass mit avr-size alles auslesbar ist. Nur leider kann 
man sich nicht nur die gewünschten Parameter zurückgeben lassen. Dh. ich 
müsste das erstmal prasen. Bevor ich das mache, dachte ich mir, ich 
frage hier mal nach, ob es doch eine Möglichkeit gibt, nur die 
gewünschte Zahl zu erhalten.

Mich interessieren hier nur die Werte .text size und .bss size
1
avr-size -A main.elf
2
main.elf  :
3
section                     size      addr
4
.data                          4   8388864
5
.text                      12362         0
6
.bss                         626   8388868
7
.comment                      17         0
8
.note.gnu.avr.deviceinfo      64         0
9
.debug_info                 2624         0
10
.debug_abbrev               2482         0
11
.debug_line                   29         0
12
.debug_str                   976         0
13
Total                      19184
OP #5310882
Lesenswert?
• ▲
▼
Thomas G. schrieb:
> Na so wild ist das bissel rausfriemeln ja ned:
> avr-size -A main.elf | awk '/.text/ {print $2}'
> Liefert in deinem Fall 12362
> unter Linux-Artigen, unter WIN wird's doch sicher auch was
> entsprechendes geben.

Genau den anstoß hab ich gebraucht. Hatte vor das in C/Cpp zu parsen :P. 
SO ist nat. sehr einach und gut. Danke dir!

Martin B. schrieb:
> Bei mir kommt mit:
>
> avr-size --mcu=attiny13a   --format=avr main.elf

Sei mir nicht böse, aber das war nicht die Frage :)
Persönliche Seite #5310916
Lesenswert?
• ▲
▼
Christian S. schrieb:
> ich würde gerne den Speicherbedarf von Programm und RAM meines AVRs
> wissen, bevor ich diesen flashe um ggf. den Flashvorgang vor start
> abbrechen zu können. (z.B. wenn das Programm zu groß ist).

Wenn es nur darum geht und die RAM-Größe bekannt ist:

Im default ld-Skript werden die defaults für __DATA_REGION_LENGTH__ 
und __TEXT_REGION_LENGTH__ großzügig gesetzt (mindestens so groß dass 
alle Devices der Emulation abgedeckt sind).  Diese Symbole kann man 
überschreiben:
1
$ cat foo.c
2
int volatile v;
3
int main() { return v; }
4

5
$ avr-gcc -mmcu=atmega8 foo.c # ok
6

7
$ avr-gcc -mmcu=atmega8 foo.c -Wl,--defsym,__DATA_REGION_LENGTH__=2 # ok
8

9
$ avr-gcc -mmcu=atmega8 foo.c -Wl,--defsym,__DATA_REGION_LENGTH__=1
10
./avr/bin/ld.exe: address 0x800062 of a.out section `.bss' is not within region `data'
11
collect2.exe: error: ld returned 1 exit status
12

13
$ avr-gcc -mmcu=atmega8 foo.c memory-atmega8.x
14
./avr/bin/ld.exe: a.out section `.text' will not fit in region `text'
15
./avr/bin/ld.exe: region `text' overflowed by 98 bytes
16
collect2.exe: error: ld returned 1 exit status
17

18
$ cat memory-atmega8.x
19
OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")
20

21
__DATA_REGION_LENGTH__ = 2;
22
__TEXT_REGION_LENGTH__ = 0K;
23

24
$ avr-size a.out
25
   text     data      bss      dec      hex  filename
26
     98        0        2      100       64  a.out

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.