Hallo zusammen, ich würde mir gerne den Speicherverbrauch meiner C-Module einzeln mit avr-size anzeigen lassen. Das Problem ist, dass die kompilierten .o-Dateien in verschiedenen Unterordnern abgelegt werden (entsprechend der Ordnerstruktur, in der die c-Dateien liegen). Ich muss also in jedes Unterverzeichnis wechseln und avr-size *.o aufrufen. Das ist von Hand natürlich ziemlich mühsam. Deshalb meine Fragen: 1. Gibt es unter Windows eine einfache Möglichkeit, avr-size mit einem Befehl alle *.o-Dateien in Unterverzeichnissen verarbeiten zu lassen? Unter Linux würde ich das wohl mit "find -exec" erledigen. Zur Not müsste ich cygwin installieren, aber vielleicht gibt es ja eine einfachere Möglichkeit? Perfekt wäre, wenn am Ende eine Liste mit den Größen aller Module rauskäme und nicht je eine pro Unterordner. Also dass avr-size einmal aufrufen wird und als Argument alle Dateien mit relativem Pfad bekommt. Ist aber nicht unbedingt nötig. 2. Ich verwende AtmelStudio 6. Kann man den Aufruf von avr-size während oder am besten am Ende des Buildvorgangs einbauen? Ich würde das Makefile gerne weiterhin automatisch von AtmelStudio erzeugen lassen. Wenn man darin von Hand etwas ändert, wird es ja vermutlich beim nächsten Ändern von den Projekteinstellungen überschrieben ... Vielen Dank schonmal :)
Habe es mittlerweile selber gelöst bekommen. Vielleicht kann es ja noch jemand gebrauchen: Einfach diese Batchdatei ins Projektverzeichnis legen und ggf. die Pfade anpassen (meine .o-Dateien liegen alle im Ordner "Debug\src", daher wechsle ich gleich da rein). Außerdem muss der Ort von avr-size.exe im System-Path eingetragen sein. Mit einem Doppelklick wird der Speicherverbrauch aller .o-Dateien und des ganzen Images angezeigt.
1 | @setlocal enabledelayedexpansion |
2 | |
3 | @echo Modules: |
4 | @cd Debug\src |
5 | @set files= |
6 | @for /f %%A in ('forfiles /s /m *.o /c "cmd /c echo @relpath"') do @set files=!files! %%~A
|
7 | @avr-size -t %files% |
8 | |
9 | @echo. |
10 | @echo Image: |
11 | @cd .. |
12 | @avr-size *.elf |
13 | |
14 | @echo. |
15 | @pause |
Man kann das Script auch automatisch nach dem Buildvorgang ausführen. Dazu muss man es in den Projekteinstellungen unter "Build Events" bei "Post-build event command line" eintragen. Habe das aber doch nicht gemacht, da ich die Größe aller Dateien doch nicht so häufig brauche. Man könnte sie aber beispielsweise auf die Weise nach dem Build automatisch in eine Datei schreiben lassen.
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.