mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Storage Class overlay


Autor: Martin Domke (eric_arthur_blair)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.