Forum: Mikrocontroller und Digitale Elektronik Storage Class overlay


von Martin D. (eric_arthur_blair)


Lesenswert?

Hallo!


Ich hatte in diesem Thread [1] schon einmal meine Problematik
angesprochen, dass ich beim Compilieren meiner EFSL-Portierung für den
PIC18F6680 immer eine Fehlermeldung bekomme, die mich darauf hinweist,
dass der Stack Frame zu groß wäre.
Ich hatte dann erst versucht mit der Compileroption -sco des MCC18 alle
lokalen Variablen als overlay zu deklarieren, aber finde dieses Vorgehen
etwas brachial. Ich meine dadurch wird jede Schleifen- und Hilfsvariable
als static deklariert. Nun habe ich versucht per Hand an den Stellen, wo
große Datenobjekte lokal angelegt werden die Variablen als overlay zu
deklarieren. Mein Frage ist nun: Findet der Linker selber heraus, für
welche Variablen er den gleichen Speicherbereich verwenden kann, oder
muss man das alles selber überpüfen? Wenn ich also in einer Funktion
eine Variable vom Typ FileLocation anlege und aus dieser Funktion eine
weitere Funktion aufrufe, die ebenfalls eine solche lokale Variable
anlegt, merkt der Linker dann, wenn beide Variablen als overlay
deklariert sind, dass er für diese nicht den gleichen Speicherbereich
verwenden kann? Oder verwendet der Linker pauschal für alle Variablen
des gleichen Typs den gleichen Speicherbereich, vorrausgesetzt die
Variablen befinden sich in unterschiedlichen Funktionen?



Minimalbeispiel zu der oben erläuterten Situation:

int func1(void)
{
    overlay FileLocation loc;
    func2();
}

int func2(void)
{
    overlay FileLocation loc;
}

Vielen Dank im Vorraus für eure antworten,

Martin


[1] http://www.mikrocontroller.net/forum/read-1-405867.html

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.