Hi, Crossworks zeigt mir für meine STM32 Projekte nach einem Build an, wieviel Flash und RAM das aktuelle Projekt verbraucht. Wie kann ich mir entsprechendes im AVRStudio anzeigen lassen? Gruß Thomas
Gast
#2411168
Nachdem du dein Projekt mit build erstellt hast, müssten die Größen unten im Text erscheinen. Klick evtl. mal links unten auf den Button "build", falls der Text nicht automatisch aufgeht.
Leider nein, ich bekomme nur diese Ausgabe ------ Rebuild All started: Project: MP3, Configuration: default AVR ------ ========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
Bekommst Du nicht den ganzen Sermon im Fenster unten:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
AVR-Sudio 5 LG Ernst
Nein, nur die zwei Zeilen. Ich habe das AVR Studio 5. Keine Ahnung was da los ist.
Und dafür: Ernst B. schrieb: > AVR Memory Usage > ---------------- > Device: atmega8 > Program: 2058 bytes (25.1% Full) > (.text + .data + .bootloader) > Data: 86 bytes (8.4% Full) > (.data + .bss + .noinit) sind diese Zeilen im Makefile verantwortlich: size: ${TARGET} @echo @avr-size -C --mcu=${MCU} ${TARGET} mfg.
Ich habs gefunden: Unter Tools -> Options -> Projects and Solutions -> Build and Run -> MSBuild project build output verbosity muss "Diagnostic" eingetragen sein. Dann bekommt man auch alle Angaben. Danke & Gruß Thomas
Gast
#2528556
Ich hoffe meine Frage passt hier rein.
Wie kann ich dem avr-gcc mitteilen wie groß der Bootloader (bzw. die
section) ist, um diesen in die Ausgabe der Speicherauslastung mit
einzubeziehen?
Der nutzbare Speicherplatz wird ja durch Verwendung eines Bootloaders
verringert (bzw. vergrößert). Ich habe z.B. im aktuellen Projekt einen
ATMega88 der die Ausgabe liefert:
AVR Memory Usage
----------------
Device: atmega88
Program: 7532 bytes (91.9% Full)
(.text + .data + .bootloader)
Data: 512 bytes (50.0% Full)
(.data + .bss + .noinit)
Der Bootloader hat eine BootSize von 512 Words.
Woher weiß der GCC nun, wie groß die Section .bootloader ist?
Dirk schrieb: > Woher weiß der GCC nun, wie groß die Section .bootloader ist? Steht im "Part Description File".
Dirk schrieb: > Der Bootloader hat eine BootSize von 512 Words. > > Woher weiß der GCC nun, wie groß die Section .bootloader ist? Das eine hat mit dem anderen nichts zu tun. Die Prozentangabe geht immer vom kompletten Flash aus. Einen Bootloader musst du schon selber abziehen. Und die Größe der Section .bootloader sagt aus, wie viel Code du da rein gepackt hast. Diese Größe ist aber praktisch immer Null, denn diese Section wird nämlich nicht für einen Bootloader verwendet.
Gast
#2528700
Da fällt mir nur ein Hack ein, bei dem du im Projekt/Quellcode angeben musst wie groß der Bootloader ist. avr-size, das Tool zur Anzeige der statischen Speicherauslastung, kann ja keine Fuses lesen und deswegen kann es auch nicht wissen wie groß du den Bootloader gemacht hast. Bei dem Hack gehe ich davon aus, dass du einen Bootloader im AVR hast und dessen Größe kennst. Und du willst nur haben, dass die Anzeige des avr-size am Ende des Kompilierens dir anzeigt, wie voll der AVR jetzt ist. Beim Hack kannst du in der Source einen Dummy-Bootloader anlegen, der in der Größe dem tatsächlichen Bootloaderbereich entspricht. Also im einfachen Fall ein Array passender Größe. uint8_t dummy_bootloader[512] BOOTLOADER_SECTION; Dann musst du dem Linker über Linkeroptionen in den Projekteinstellungen oder im Makefile sagen, wo die Section .bootloader anfängt: # Beispielzeilen fürs Makefile .... BOOTLOAD = 0x3800 LDFLAGS += -Wl,--section-start=.bootloader=$(BOOTLOAD) Damit sollte die Anzeige von avr-size angeben, wie voll das gesamte Flash inkl. Bootloader geworden ist. Aber du musst noch verhindern, dass beim Flashen versucht wird den Dummy-Bootloader in den AVR zu brennen. Die Bootloader Section kann man ja schützen. Aber eventuell führt ein Schreibzugriff zu einem Fehler und zu einem Abbruch des ISP-Programms. Also mit avr-objcopy bei der Umwandlung der Elf-Datei in die Hex-Datei die Dummy-Bootloader Section entfernen, z.B. statt der Zeile $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ im Beispiel Makefile die Zeile $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .bootloader $< $@ verwenden.
Gast
#2528708
Danach die Frage "Ist das Ergebnis den Aufwand wert?" IMHO lohnt es nicht. Es ist einfacher von Hand zu Fuß die Größe des Bootloaders von der Flashgröße abzuziehen (einmalig fürs Projekt) und dann die Prozentzahl neu zu berechnen (pro Compilerlauf) bzw. aufzumerken, wenn die angezeigte Größe über der berechneten Größe liegt.
Gast
#2532936
@Stefan: "Die Prozentangabe geht immer vom kompletten Flash aus. Einen Bootloader musst du schon selber abziehen." ... sowas habe ich mir schon gedacht. @Krapao: "Danach die Frage "Ist das Ergebnis den Aufwand wert?" " ...NEIN. Ich hatte gehofft dass es eine einfachere Möglichkeit gibt. Z.B. im Makefile die Berechnung des Speichers zu "manipulieren". Trotzdem erstmal vielen Dank für die schnelle Antwort.
Gast
#3112219
Hallo Forengemeinde! Ich greife nochmal den Ursprungs-Thread auf: Ich bekomme es nicht hin, die Codegrössen im AVR-Studio 4.19 (build 730) anzeigen zu lassen! Kann mir da jemand weiterhelfen? Updaten möchte ich (noch) nicht. Ins makefile kann ich leider nichts reinschreiben, da AVRStudio dieses sofort überschreibt. Bin ratlos... Gruß Sepp
Gast
#3112427
Sepp schrieb: > Ins makefile kann ich leider nichts reinschreiben, da AVRStudio dieses > sofort überschreibt Das Makefile kann im AVR/ATMEL Studio beliebig umbenannt werden.
Gast
#3112540
Ja, aber nur, wenn ich ein externes makefile einbinde. Ich würde aber gerne mit den GUI-Settings arbeiten. Mit Studio 4.18 hat's ja auch funktioniert! Anscheinend hat das Problem sonst keiner :-)
Gast
#3137848
Das Problem habe ich auch. (4.19 - 730) 4.19 hat aber auch schon den verbrauchten Speicher angezeigt. Weiss noch nicht, was ich gemacht habe, daß es jetzt nicht mehr angezeigt wird.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.