mikrocontroller.net

Forum: Compiler & IDEs Wie liest man ein .m (memory map) file?


Autor: Christian Widtmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.
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.

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