Forum: Mikrocontroller und Digitale Elektronik Unterschied idata :: udata


von Der M. (steinadler)


Lesenswert?

Hallo zusammen,

ich programmiere hier mit dem C18-Compiler von Microchip.

Da gibts u. a. die Speicherbereiche idata und udata.
Das eine sind initialisierte Daten, das andere nicht.

Nur was genau versteht man darunter???

von Klaus F. (kfalser)


Lesenswert?

Nach idata kommen initialisierte (globale) Variablen, also z.B.
int Zähler = 3;
außerhalb jeder Funktion.
Nach udata kommen die nicht explizit initialisieren Variablen, die laut 
C-Definition mit 0 starten.

Der Grund für die Unterscheidung ist, daß für das idata Segment irgendwo 
im ROM eine Kopie der Initialisierungswerte stehen muß, welche beim 
Programmstart nach idata kopiert wird.
Der udata Bereich braucht nur mit 0 beschrieben werden, es ist unsinnig 
für diesen auch eine Kopie im ROM zu halten.

Klaus

von Der M. (steinadler)


Lesenswert?

Achso... danke

und was passiert, wenn ich in einem udata-Bereich eine Variable am 
Programmbeginn initialisiere?

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.