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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.