www.mikrocontroller.net

Forum: Compiler & IDEs Heap erweitern unter GCC


Autor: learny (Gast)
Datum:

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

Autor: Jörg X. (Gast)
Datum:

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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

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

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.