Forum: Mikrocontroller und Digitale Elektronik LPC23XX Codegröße, ROM und RAM Verbrauch


von Pong (Gast)


Lesenswert?

Hallo Gemeinde,

ich habe hier einen LPC2378 (ARM7) und benutze die Yagarto Toolchain 
(GCC).

Beim Kompilieren wird mir folgendes ausgegeben:

Size after:
test.elf  :
section             size         addr
.text             116536            0
.data               5640   1073741824
.initdata           5640       116536
.bss               11800   1073747464
.stack             13312   1073759488
.comment            1368            0
.debug_aranges      6352            0
.debug_pubnames    17609            0
.debug_info       110483            0
.debug_abbrev      27811            0
.debug_line        35495            0
.debug_frame       14772            0
.debug_str         26324            0
.debug_loc         65271            0
.ARM.attributes       16            0
.debug_ranges      10112            0
Total             468541

Von den AVRs kenne ich nur die Ausgabe von text, data und bss.
ROM Verbrauch: text + data
dyn. RAM Verbrauch: data + BSS + Stack (dyn.)

Gilt das auch für den ARM?
Was fange ich aber mit den ganzen anderen Angaben hier an?
initdata klingt zB wichtig.
Und worauf bezieht sich die Angabe zum Stack? Der ist doch dynamisch...

Kann ich die Ausgabe auch so abändern, dass ich den Verbrauch in % 
angegeben bekomme?

Freue mich über etwas Unterstützung.
Pong

von (prx) A. K. (prx)


Lesenswert?

Da das vom von dir gebauten Linkerscript und vom Controllertyp abhängt 
ist eine automatisierte summarische Angabe durch Compiler/Linker oder 
sonstwen nicht so einfach möglich.

Code ist hier .text, für die ROM-Kapazität kommt noch .initdata hinzu.
Für's RAM sind hier .data, .bss und .stack relevant. Wenn du das 
automatisiert und in Prozent haben willst, dann bau ein einfaches 
Scriptprogramm, das diese Zeilen auswertet und summiert. Oder die 
Ausgabe von objdump auswertet.

Edit: Bei .data und .initdata kann es auch andersrum sein, aber da beide 
per Def gleich gross sind ist das egal.

Schau ins Mapfile, dort findet sich die Adressbelegung.

von Wilhelm F. (Gast)


Lesenswert?

@Pong:

Die Yagarto Toolchain kenne ich nicht, arbeitete aber mal mit ARM und 
Keil µVision. Die hat ein Output-Window, wo die Speicherdaten angezeigt 
werden. Unter RealView funktionierte das nicht mehr.

Ich bastelte mir ein Script, welches die Daten im Map-File suchte, und 
im Output-Window darstellte. Sowas sollte gehen.

Mit dem Script, kann man sich dann aussuchen, was dargestellt werden 
soll.

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.