Verständnisfrage: Heap Initialisierung im Assembler Startup-Code

OP #1660377
Lesenswert?

Hallo,

habe eine eigene Startup-Routine für der ARM Cortex A8 geschrieben, aber 
ich verstehe nicht, wie ich den Heap Sektor initialisieren soll.
Nun habe ich aus einen anderen Projekt(für den ARM9) folgenden Code 
gefunden:

  LDR r0, = _heap_start_;
  LDR r1, = _heap_end_;
  SUB r1, r1, r0;
  CMP r1, #8;
  MOVGE r2, #0;
  STRGE r2, [r0], #+4;
  STRGE r1, [r0];

aber ich weiss leider nicht ob diese Initialisierung richtig und 
überhaupt nötig ist.
Ich benutze den gcc vom CodeSourcery zum compilieren.
Habe leider keine Infos zu meinem Problem gefunden. Weiß vielleicht 
jemand etwas darüber oder wo ich Informationen dazu finden kann ?

Vielen Dank im Voraus

Jerome
OP #1662293
Lesenswert?

Hallo nochmal,

habe mich warsch. etwas umständlich in meiner Frage ausgedrückt. 
Eigentlich sollte meine Frage nur lauten:
Wenn ich den GCC benutze, wie muss mein Heap-Speicher aussehen, bevor 
das erste mal malloc() o.ä. aufgerufen wird? Muss es mit Nullen gefüllt 
sein oder irgendetwas am Anfang? Ich denke, dass der GCC Compiler da 
keine Untescheidung macht ob es sich um einen ARM9 oder ARM Cortex A8 
ist, oder?

Vielen Dank im Voraus

Jerome
Gast #1662442
Lesenswert?

Vielleicht ein bischen mehr Info:

Malloc fordert X Bytes per "Systemcall" an. Zumindest beim ARM7 und GCC 
laufen solche Dinge über die newlib und die will Systemcalls 
implementiert haben. Der Systemcall gibt dann einen Zeiger auf den 
Speicherplatz zurück.
Da muss nichts großartig initialisiert werden.
Im einfachsten Fall ist der Anfang des Heaps der Anfang des freien 
Speicherplatz. Jedesmal wenn per Malloc Speicher angefragt wird, wird 
die zu verwendende Speicheradresse hoch gezählt.
In komplexeren Systemem muss man sich allerdings etwas anderes 
ausdenken.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren