Forum: Compiler & IDEs avr-size vs. avr-nm


von Olias (Gast)


Angehängte Dateien:

Lesenswert?

Moin, moin,

Ich habe ein Problem mit dem Verständniss der Ausgaben von avr-sze bzw. 
avr-nm.

Im Quelltext sind folgende Globale Variablen definiert:
fs_eepromB, fs_eepromM, fs_flashIC, und eepromB_file, eepromM_file, die 
mit jeweils 40 bzw. 14 Byte zu buche schlagen, diese Zahl entspricht der 
Größe, die man aus den Quelltext "lesen" kann und auch durch die Ausgabe 
von avr-nm bestätigt wird. Das macht zusammen 162 Byte (wenn mir meine 
Grundschullehrerin nicht was vom Pferd erzählt hat...)
-> Datei avr_nm.txt, Zeilen 13-16 und 25-27

avr-size gibt aber für .data 156 byte an, was zu wenig erscheint, zumal 
ja auch noch einige Progmem-pointer hinzukommem. Selbst wenn die 
Progmem-Pointer nicht im Ram gehalten werden (wäre ja toll & ok) fehlen 
mir in der Ausgabe von avr-size immer noch 8 Byte...

Wo liegt da mein Denkfehler, bzw. was ist nun richtig?
Kompiliert wurde immer mit -o0.

Vielen Dank

Gruß
Olias

von Stefan E. (sternst)


Lesenswert?

Die Variablen liegen im Common-Block. avr-size kann sie daher nicht mit 
einbeziehen, weil sie erst später (beim Linken) einer konkreten Section 
(.data oder .bss) zugeordnet werden.

Füge den Compiler-Optionen ein -fno-common hinzu.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Oder halt avr-size erst auf das gelinkte ELF-File anwenden.

von Olias (Gast)


Lesenswert?

Ok, dann hatte ich grundsätzlich was verwechselt...
Vielen Dank!
Nun ist .bss 162 byte groß - Prima. Nur frage ich mich jetzt was zum 
Henker da 156 Byte im .data-Bereich RAM klaut...
Die Summe der im nm-listing im initialized data bereich (d/D) ist nicht 
mal 30 byte..
Ob die Symbole mit "r" in der "read only data section" ins RAM kopiert 
werden oder nur im ROM liegen kann man nicht mittels avr-nm prüfen? Die 
motivation Ram zu sparen ist wie immer gegeben, daher wäre es schön zu 
wissen was da so hungrig ist.
Im Prinzip gehört diese Frage aber nicht mehr in diesen Strang. Wenn sie 
stört, einfach ignorieren.

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.