Forum: Compiler & IDEs ARM7 heap in anderen Speicherbereich legen


von Micro M. (micromann)


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?

von Tilo (Gast)


Lesenswert?

Die gibts auch und müssten in deinem Linkerscript zu finden sein.

von Micro M. (micromann)


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.

von Tilo (Gast)


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.

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.