Forum: Compiler & IDEs avr-size in Unterordnern bzw. nach Build in AtmelStudio aufrufen


von xfr (Gast)


Lesenswert?

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 :)

von xfr (Gast)


Lesenswert?

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