Wie liest man ein .m (memory map) file?

Gast #75384
Hallo!

Der Betreff ist schon die Frage: wie kann ich aus dem .m file die
statische bzw. dynamische Belegung des SRAM auslesen? Flash und EEPROM
werden mir ja von ZeusProg während der Programmierung angezeigt.
Allerdings kann ich mit den von unserem Institut zur Verfügung
gestellten MemEval-Routinen nur den gesamen SRAM-Verbrauch bestimmen,
der ja nicht zwischen statisch und dynamisch unterscheidet.

mfg
Christian
Gast #75385
Am besten liest man ein .map File gar nicht. ;-)

Normalerweise ist die Symboltabelle (Ausgabe von avr-nm -n, beim
aktuellen WinAVR-Makefile auch in $(TARGET).sym abgespeichert) viel
sinnvoller zu lesen.  avr-size -A zeigt die Belegung ebenfalls an.
In der Symboltabelle ist die RAM-Belegung die Differenz zwischen
__bss_end und __data_start.

Aber: die ,,dynamische'' RAM-Belegung läßt sich mittels derartiger
Methoden nicht ermitteln.  Stellt sich ja erstmal die Frage, was für
Dich dynamisch belegter RAM ist.  Was Du mit malloc() anforderst, mußt
Du schon selbst wissen.  malloc-intern gibt es ein paar Variablen, mit
denen man zur Laufzeit (bspw. im Debugger) analysieren kann, wie viel
aktuell belegt ist.

Falls Du damit die Stackbenutzung meinst, kannst Du diese auch nicht
in statischer Form aus so einer Datei holen.  Woher sollten diese denn
wissen, wer wann wen aufruft, ob sich Funktionen gar ggf. rekursiv
aufrufen?  Das mußt Du schon selbst wissen.

Im generierten Assemblercode (avr-gcc -S) finden sich Kommentare, die
die Belegung der einzelnen Stackframes angeben.  Achtung, damit ist
ausdrücklich kein Disassembler gemeint, der kann logischerweise
keine Kommentare des Compilers mehr enthalten...  Diese Zahlen können
Dir zusammen mit Deinem Aufrufgraphen für die Funktionen angeben,
wieviel Stack durch all diese verbraucht wird.  Natürlich solltest Du
dabei die Interruptroutinen und die von denen gerufenen Funktionen
nicht vergessen...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 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.