Forum: Mikrocontroller und Digitale Elektronik Was ist mit diesen Zeilen gemeint?


von Janine (Gast)


Lesenswert?

Hallo
ich arbeite mit Keil uVison 4.5 und stm32f407ZG
weiß jemand mal vielleicht wie ich der RAM
bzw FLASH verbrauch ausrechnen kann?
Program Size: Code=63224 RO-data=36336 RW-data=704 ZI-data=8320

Danke

von Timmo H. (masterfx)


Lesenswert?

Mit "nm - - size-sort xyz.elf" hast du eine schöne Übersicht

von Easy (Gast)


Lesenswert?

Code ist Programm im Flash
RO Data sind Konstanten im Flash
RW Data sind Variablen im RAM

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Easy schrieb:
> RO Data sind Konstanten im Flash
> RW Data sind Variablen im RAM
Und noch eine Silbe zur Herkunft:
RO = read only
RW = read + write

von W.S. (Gast)


Lesenswert?

..und ZI (zero initialized) ist ebenfalls RAM.

W.S.

von Janine (Gast)


Lesenswert?

Hallo,

Unter diesem Link findet man die µc Datasheet.
http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1577/LN11/PF252136#

meine Software läuft orientierungslos und sieht so aus als er auf die 
falschen Adressen zugreift. Diese sollte aber wegen einer externen 
Library, die ich in die Software Integriert habe.

Program Size: Code=63224 RO-data=36336 RW-data=704 ZI-data=8320

ich denke daran, dass der stm32f407ZG Ram Größe reicht nicht aus. stimmt 
das oder habt Ihr ganz andere Meinungen.

Danke

von Eric B. (beric)


Lesenswert?

Janine schrieb:
> Program Size: Code=63224 RO-data=36336 RW-data=704 ZI-data=8320

Selbst wenn alle RO Daten ins RAM gepiegelt werden sind das 44kB. Aus 
dem Datenblatt entmehme ich, dass der stm32f407 192 kB RAM hat. Das soll 
also locker reichen.

von Timmo H. (masterfx)


Lesenswert?

Hinweis: Der Compiler/Linker weiß aber nicht inwieweit der Stack 
ausgenutzt wird. Es kann also dennoch sein, wenn du zu viele/große 
lokale Variablen (bzw. malloc etc) nutzt, dass der Stack überläuft.

von W.S. (Gast)


Lesenswert?

malloc belastet den Heap (sofern vorhanden), aber nicht den Stack.

Guck doch einfach mal in die Linkerliste, ob dort tatsächlich die 
richtigen Adreßräume für den RAM zu lesen sind. Und schau dir dein 
Linkersteuerfile an, da steht sinngemäß etwa sowas:

--device=DARMSTM
--compatible=cortex-m3
--output linked.elf
--ro-base 0x00000000
--rw-base 0x20000000
--list linklist.lst
--info sizes,totals,veneers,unused
--map
--symbols
--xref
--callgraph
--first startup.o
--entry=Kaltstart

(ist für nen STM32F103ZET6) Die Zeile für --rw.. muß natürlich auf 
deinen Chip angepaßt sein. Wenn da was Falsches steht, packt der Linker 
alles an die verkehrten Stellen.

W.S.

von bal (Gast)


Lesenswert?

Schon lustig,

Wenn jemand mit nem Mädlsnamen hier auftaucht sind auf einmal alle ganz 
lieb und hilfsbereit. Sogar der streitbare W.S. ist auf einmal ganz 
zahm, anstatt sich über fehlende Grundlagen, viele Tippfehler oder 
mangelnde Eigeninitiative zu mokieren ;-)

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.