Forum: Mikrocontroller und Digitale Elektronik RAM Nutzung, unterschiedliche Größenangaben


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Adam P. (adamap)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich versuche grad nachzuvollziehen auf welche Angabe ich mich verlassen 
kann.

SAM4E16E
RAM-Bereich: 0x20000000 - 0x20020000 (131072 bytes)
Stack ist auf 0x2000 (8192 bytes) definiert.

1)
AtmelStudio liefert mir folgende Ausgabe:
(arm-none-eabi-size.exe "Main_Module.elf")
Data Memory Usage:   85712 bytes   65,4 % Full

2)
Im map-File steht:
1
// 0x20000000 - 0x20013c90
2
// mein genutzter RAM
3
.stack          0x20013c90     0x2000 load address 0x004597d0
4
                0x20013c90                . = ALIGN (0x8)
5
                0x20013c90                _sstack = .
6
                0x20015c90                . = (. + __stack_size__)
7
 *fill*         0x20013c90     0x2000 
8
                0x20015c90                . = ALIGN (0x8)
9
                0x20015c90                _estack = .
10
                0x20015c90                . = ALIGN (0x4)
11
                0x20015c90                _end = .
Somit würde 0x20015c90 bedeuten, der RAM wird zu 89232 bytes genutzt.

3)
Ausgabe der Größen aus den object-files
arm-none-eabi-size.exe *.o

.data + .bss aller Dateien zusammengerechnet: 75282 bytes

Ok, da muss man noch die ganzen fill bytes dazu rechnen,
aber das sind keine mehrere 1000.

Was stimmt davon?

Gruß Adam

von Programmierer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Adam P. schrieb:
> .data + .bss aller Dateien zusammengerechnet: 75282 bytes

Da fehlt der Stack und Heap und sonstige Dinge die im Linkerscript 
passieren. Am hilfreichsten ist eigentlich "readelf -S Datei.elf" und 
das mit dem Linkerscript abgleichen.

von Adam P. (adamap)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Programmierer schrieb:
> Da fehlt der Stack und Heap

Selbst wenn ich den Stack dazu zähle, passt es nicht.
Heap nutze ich nicht.

Programmierer schrieb:
> Am hilfreichsten ist eigentlich "readelf -S Datei.elf"
1
[ 3] .relocate   REL             20000000 050000 000dc0 08 WAX  0   0  8
2
[ 4] .bss        NOBITS          20000dc0 050dc0 012ed0 00  WA  0   0  8
3
[ 5] .stack      NOBITS          20013c90 050dc0 002000 00  WA  0   0  1

Da komme ich auch auf 89232 bytes, wie es laut dem map-file ist.

: Bearbeitet durch User
von Adam P. (adamap)


Bewertung
0 lesenswert
nicht lesenswert
OK, ich glaub jetzt hab ich es gefunden.
Es lag am .relocate.

Wenn ich vom map-file (89232 bytes) die Größe vom .relocate abziehe,
dann erhalte ich das was AtmelStudio mir ausgibt.

Danke @ Programmierer (Gast).
"readelf" kannte ich noch nicht.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.