Forum: Mikrocontroller und Digitale Elektronik Was bedeutet in KEIL Code, RO, RW, ZI (hier die Antwort)


von Ersi (cell85)


Lesenswert?

Wer neu bei Keil gelandet ist, fragt sich, was folgende Angaben 
eigentlich richtig bedeuten.

Program Size: Code=11766 RO-data=6838 RW-data=104 ZI-data=1280

Gestern war ich mal bei einem Keil Workshop, wo ich von einem Keil 
Mitarbeiter nicht nur erfahren habe das es bald endlich intellisense 
(autovervollständigung) und paar weitere neue nette "Komfort"-Features 
in Keil geben wird sondern auch das:

Code: Codesize
RO: Konstanten (nicht ausführbahrer Code der trotzdem im Flash landet)
RW: Variablen
ZI: Zero initialized Data, Der Compiler kategorisiert RW und ZI Data und 
trennt es, ist aber ein relikt aus der Betriebssystem Programmierung. Je 
nach dem wie groß das Objekt ist wird es ZI oder RW aber es ist 
eigentlich der gleiche Speicher (RAM) ... RW und ZI ergeben den RAM. Der 
Stack liegt bspw. in diesem ZI Bereich.

bedeutet.

Ich war mir nie sicher was ZI bedeutet da es manchmal idiotische Größen 
anzeigt, das liegt aber laut dem Keil Mitarbeiter an einem Bug der bald 
behoben wird (wenn man bpsw. die GUI-Library in Keil benutzt, werden 
reservierte aber nicht im Programm genutzte Speicher mitreingerechnet), 
das Phenomen tritt auch bei der Verwendung von @Attributen auf.

Viele Grüße
Sven

von Peter D. (peda)


Lesenswert?

Sven S. schrieb:
> Der Compiler kategorisiert RW und ZI Data und
> trennt es, ist aber ein relikt aus der Betriebssystem Programmierung.

Nö, das hat schon seinen Grund.
Um einen Bereich auf 0 zu setzen reicht eine Schleife (memset).
Um die anderen globalen Variablen zu initialisieren, muß man die Werte 
aber aus dem Flash kopieren.


Peter

von Dollmann (Gast)


Lesenswert?

Sven S. schrieb:

> ... Keil Mitarbeiter an einem Bug der bald behoben wird ...


Vielleicht doch lieber GCC installieren?

von M. G. (looking)


Lesenswert?

Sven S. schrieb:
> Gestern war ich mal bei einem Keil Workshop

Was für ein Keil Workshop war das?
Gibt es weitere Termine?
Danke.

von Ersi (cell85)


Lesenswert?

Auf der Website von Keil unter Events hab ich das gefunden, war halt was 
in Frankfurt in der Nähe.
Ein NXP Hands on mit Keil.
Fands halt cool mal jemand von der legendären Keil Truppe zu sehen und 
auszutauschen.
Selbstverständlich auch sich mal mit dem Dualcore 435x Cortex M4 zu 
beschäftigen.

Fands interessant, das der M0 kein Systick-Timer hat aber der M4
und das der M0 nur über JTAG ansprechbar ist und nicht über SWD, da SWD 
kein chaining unterstützt wie JTAG.

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.