www.mikrocontroller.net

Forum: Compiler & IDEs ARM7 heap in anderen Speicherbereich legen


Autor: Micro Mann (micromann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich such mir noch nen Wolf:

Bei dem AVR GCC gibt es die schönen Symbole __heap_start und
__heap_end um den Stack in einen beliebigen Speicherbereich zu legen.

Ich versuche nun bei meinem ARM7 (GCC 4.1.1) meinen heap in einen
externen Speicherbereich zu packen, um das interne SRAM für mehr
Stack zu haben. Hier gibt es diese Symbole aber wohl nicht.

Wie bekomme ich das bewerkstelligt? Jemand eine Idee?

Autor: Tilo L. (katagia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die gibts auch und müssten in deinem Linkerscript zu finden sein.

Autor: Micro Mann (micromann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tilo, danke für die Antwort.

Wenn ich es recht verstehe meinst du einen Platzhalter im Linker script
nach der Definition des Stacks.

Man könnte den auch  __foo_start nennen, wenn man das wollte
(wenn es im startup-file entsprechend anpasst ist).


Wenn ich das nicht fehlinterpretiert habe(was ich nicht ausschließen
möchte), so ist das beim AVR-GCC doch etwas anders.

Dort kann man direkt mit einer Definition Anfang und Ende des heaps 
absolut festlegen
--defsym=__heap_start = 0x1000
--defsym=__heap_end   = 0x2000

Mehr noch man kann sogar explizit den malloc Bereich definieren:
__malloc_heap_start
__malloc_heap_end

Funktioniert das auch beim arm-elf-gcc, oder irgendwas anderes mit 
vergleichbarem Resultat? Oder hab ich es nur nicht verstanden :-/
Ich finde diese Symbole immer nur im Zusammenhang mit AVR-GCC.

Autor: Tilo L. (katagia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Heap ist afaik Sache der Newlib. Diese benötigt entsprechende 
Syastemcalls, die irgend wo stehen müssen. In denen siehst du, wie das 
ganze funktionieren könnte.

Ich musste meine Systemcalls selbst schreiben und konnte daher eigene 
Marker verwenden.

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.