ARM7 heap in anderen Speicherbereich legen

OP #1241892
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?
OP #1242097
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.
Gast #1242338
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren