Forum: Mikrocontroller und Digitale Elektronik Verbrauchter Flash/RAM ARM-GCC


von Moritz M. (Gast)


Lesenswert?

Hallo,

ich versuche grade herauszufinden wie groß mein Programm im Flash ist 
und wie viel RAM es benötigt. Ich benutze ARM-GCC.

Wenn ich einfach nur text + data zusammen rechne kommen nur 6430 Byte 
raus. Das kann ich mir nicht vorstellen.

Der Compiler macht folgende Ausgabe:
1
Program Size:
2
      text     data      bss      dec      hex  filename
3
      6398       32    79136    85566    14e3e  FreeRTOS_Test.elf

Moritz

PS: Wenn jemand einen Weg kennt den Verbrauchten Speicher zur Laufzeit 
zu bestimmen wäre ich auch sehr Dankbar. Ich benutze einen STM32F407 
Controller

von Artjomka (Gast)


Lesenswert?

Schau mal in dein Linker-Script (*.ld Datei). Da sind normalerweise 
Labels definiert, sowas wie _bss_start und _bss_end oder so. Die kannst 
du als externe Werte in C einbinden und ausgeben.

Zur Laufzeit bringt es dir aber eigentlich nur was deinen RAM-Verbrauch 
an zu zeigen. Wie/Ob das mit malloc und free geht weiss ich nicht. Aber 
ChibiOS bietet eigene Funktionen für den Heap (sind eigentlich genau wie 
Malloc und Free) und auch eine Funktion um den freien RAM zu ermitteln.

von Moritz M. (Gast)


Lesenswert?

Hallo,

in der Linker Datei habe ich sowas nicht gefunden. Ich hab mich daran 
orientiert:

http://www.rn-wissen.de/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc

Ist zwar für AVR-GCC aber ich dachte das würde vllt. so ähnlich sein. 
Aber wie gesagt, nur 6430 Byte kann nicht stimmen. Weis jamand wie man 
das aus den Daten oben berechnet?

Moritz

von Moritz M. (Gast)


Lesenswert?

Hallo,

hab im Internet noch mehr Quellen gefunden, wo steht das der 
Flash-Verbrauch sich aus (text + data) berechnet. Kommt mir nur ein 
bisschen komisch vor, dass das Programm nur so klein ist.

Moritz

von Artjomka (Gast)


Lesenswert?

Ich denke das passt prinzipiell vielleicht auch für ARM:
http://www.nongnu.org/avr-libc/user-manual/mem_sections.html

text = Funktionen, etc. also nur "Maschinencode"

data = ROM-Speicher für initialisiertes RAM

bss = Unintialisiertes RAM


Wie groß ist denn deine Binärdatei? Die sollte nur text+data groß sein.

Ein bischen viel RAM verbrauchst du da...

von Moritz M. (Gast)


Lesenswert?

Hallo,

ja das passt sogar. Die .bin Datei ist 6432 Bytes Groß und (text + data) 
= 6430 Bytes.

Der RAM ist wahrscheinlich so groß wegen dem FreeRTOS (2 Task)

Vielen Dank!

Moritz

von Artjomka (Gast)


Lesenswert?

Dann würde ich mal schauen wie viel RAM (Stack / work area) du den 
beiden Tasks gegeben hast und ob die nicht auch mit weniger auskommen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.