Heap-Verwaltung GCC Microblaze

OP #5189637
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.
#5198641
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.