Diskrepanz avr-nm avr-size

(Firma: Brainit GmbH) #3310840
Lesenswert?

Hallo zusammen,

ich hab grad ein Verständnisproblem:

ein mittlerweile schon etwas größeres AVR-Projekt beginnt an der Grenze 
des verfügbaren RAM zu kratzen. Ich suche die "Speicherfresser":
1
avr-size --format=avr --mcu=atmega328p main.elf
2

3
Program:   19064 bytes (58.2% Full)
4
(.text + .data + .bootloader)
5

6
Data:       1731 bytes (84.5% Full)
7
(.data + .bss + .noinit)

als nächstes lass ich mir die Symbole ausgeben:
1
avr-nm --size-sort --print-size -td main.elf
2

3
08390187 00000001 b DRDY.1553
4
08390095 00000001 b I2C_Busy
5
08390093 00000001 b I2C_Error
6
08390096 00000001 b I2C_PacketIndex
7
...

Als Typ hab ich eigentlich nur Tt, Bb und Dd. Wenn ich nun alle BbDd 
(also alle nicht-T) zusammenzähle, komme ich auf 802 byte.

Wo ist denn der Rest?
Gast #3311155
Lesenswert?

Ich würde lieber ins MAP-File schauen.
Mit der Compileroption -Wl,MAP=myMapFilName wird ein solches generiert.
Ist zwar auch nicht trivial zu lesen, liefert aber die von dir 
gewünschte Information. Und mehr!
Aber Achtung! Das ist nur der statische RAM-Verbrauch. Ohne Stack, 
malloc(), ...
(Firma: Brainit GmbH) #3311181
Lesenswert?

Jörg Wunsch schrieb:
> Michael Reinelt schrieb:
>> Wo ist denn der Rest?
>
> In nichtglobalen Variablen.
Hmm, ich dachte die lokalen Variablen wären die mit den Kleinbuchstaben 
im avr-nm?

> Vermutlich viele Strings, die du nicht
> explizit in den Flash gestopft hast.
Strings? Ha! das ist ein guter Hinweis... Strings gibt es jede Menge... 
warum zeigt avr-nm die nicht? Wären doch auch symbole, oder?
(Firma: Brainit GmbH) #3311276
Lesenswert?

Yippie Ya Yeah Schweinebacke!

Der Tipp mit den Strings war genial. Es waren tatsächlich Strings, 
genauer gesagt printf-like Format-Strings.

Da ich ohnehin ein eigenes angepasste printf() verwende, und dieses nur 
indirekt für uart_printf() und lcd_printf(), war mit einem kleinen 
variadic-Makro der Formatstring praktisch ohne Eingriff in die 
Hauptsourcen ins Flash verschoben.

Ergebnis: RAM-usage fast halbiert!

Ich hab mich immer geweigert, das Flash- und Progmem-Zeugs verstehen zu 
wollen. Jetzt hats geklickt!

Nächstes Problem: Was mach ich mit dem vielen ungenutzten RAM? :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren