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
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.