mikrocontroller.net

Forum: Compiler & IDEs Heap-Verwaltung GCC Microblaze


Autor: Martin O. (ossi-2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich compiliere mit dem GCC für den Xilinx Softcore microblaze (bzw. 
AEMB). Da habe ich nicht viel RAM. Deshalb schaue ich mir die 
Speicherverwaltung etwas genauer an.

Wenn ich dem Linker zu wenig Heap-Platz gebe, gibt malloc immer 0 
zurück. Des weiteren scheint malloc neben dem verwalteten Platz 
zusätzlichen Platz für eigene Datenstrukturen zu brauchen.

Weiss jemand genaueres bzw. wo ich so etwas finde?

PS: Ja ich weiss, dass malloc auf Mikrocontrollern verpönt ist, ich 
möchte das aber trotzdem verstehen.

Autor: Torsten Robitzki (Firma: robitzki.de) (torstenrobitzki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin O. schrieb:
> Weiss jemand genaueres bzw. wo ich so etwas finde?

Der heap wird in der Regel nicht vom compiler implementiert, sondern in 
Form einer Library mitgeliefert. Beim GCC sollte das libc oder nano 
sein.

Autor: M.K. B. (mkbit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei meinem Projekt (Cortex M4) verwende ich als Heap die Implementierung 
von https://github.com/rhempel/umm_malloc und habe diese an libc 
angebunden, sodass malloc diese verwendet.

Auf der Github Seite ist auch eine sehr ausführliche Beschreibung über 
die Funktionsweise und den Speicheroverhead für den Heap selbst.

Spontan fallen mir mehrere Gründe ein, warum malloc mehr Speicher 
benötigt, als für alle Aufrufe zusammen angefordert wurde. Diese Gründe 
müssen aber nicht auf alle Systeme und Implementierungen zutreffen.

1) Verwaltungsstrukturen für den Heap selbst
2) Fragmentierung des Heap
3) Alignment auf Vielfaches der Systemwortbreite
4) Guardbytes vor und nach dem Speicherbereich um Bereichsverletzungen 
zu erkennen

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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.