Forum: Compiler & IDEs Heap erweitern unter GCC


von learny (Gast)


Lesenswert?

Hallo,
ich war auf der suche nach der möglichkeit, den heap zu vergrößern.
Nur wie??

Ich hatte hier dieses gefunden:
Beitrag "Heap zu klein, wo kann man den vergrößern?"

nur leider wird da nicht darauf eingegangen, wie man das jetzt macht??
Hab auch gegoogelt, aber...
entweder gebe ich die falschen Suchbegriffe ein, oder google hat ne 
Lücke??

Ich möchte nur grundsätzlich wissen, wie ich unter GCC (oder mit avr 
studio) den Heap vergrößern kann, wo kann man das machen, oder wo gibts 
die Hilfe dafür??

Gruß und danke,....

learny

von Jörg X. (Gast)


Lesenswert?

Wenn ich das: http://www.nongnu.org/avr-libc/user-manual/malloc.html 
richtig verstehe, kann man den Heap (beim AVR-GCC!) nicht wirklich 
vergrößern -- Dessen Größe ist nur vom RAM (inkl. Stack) beschränkt.
Also "vergrößern" kannst du den heap nur, in dem du den Stack 
verkleinerst, bzw. ganz allgemein den RAM-Verbrauch senkst (Arrays 'nur' 
so groß wie nötig, Konstantes (Strings!) in den Flash etc.).

hth. Jörg
ps.: das 'magische' Manual, das ich da verlinkt hab, hast du auch 
offline (da du scheinbar WinAVR verwendest) verfügbar...

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Für die avr-libc und in Bezug auf malloc() ist das hier erklärt:
http://www.nongnu.org/avr-libc/user-manual/malloc.html

Nur mit internem RAM sehe ich zwei Wege:

1/ .data und/oder .bss verkleinern, d.h. weniger Variablen benutzen. 
Dadurch wandert __heap_start zu kleineren Adressen.

2/ Oder den Sicherheitsabstand (__malloc_margin) zwischen Heapende und 
Stack verkleinern und gleichzeitig den Code so schreiben, dass wenig 
Stack benutzt wird.

Ein dritter Weg ist auf der gleichen Seite erläutert:

Der Heap (und ggf. die Variablen) wird in ein externes RAM ausgelagert. 
Das setzt einen µC voraus, an den man ein externes RAM anbinden kann

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.