WINARM malloc

Gast #363691
Lesenswert?
• ▲
▼
Hi!

ich code gerade an nem filesystem auf nem AT91SAM7 und wollte den
speicher für handles und buffers dynamisch reservieren.

wenn ich malloc benutze meckert der linker.

arm-elf-gcc -mthumb -mcpu=arm7tdmi -mthumb-interwork -I. -gstabs
-DROM_RUN  -Os -Wall -Wcast-align -Wimplicit  -Wpointer-arith -Wswitch
-Wredundant-decls -Wreturn-type -Wshadow -Wunused
-Wa,-adhlns=Cstartup.lst   -MD -MP -MF .dep/main.elf.d Cstartup.o
main.o Cstartup_SAM7.o      --output main.elf -nostartfiles
-Wl,-Map=main.map,--cref -lc  -lm -lgcc -lc -lgcc
-TAT91SAM7S64-ROM.ld
c:/winarm/bin/../lib/gcc/arm-elf/4.0.2/../../../../arm-elf/lib/thumb/int 
erwork\libc.a(mallocr.o):
In function `_malloc_r':mallocr.c:(.text+0x25a): undefined reference to
`_sbrk_r'
:mallocr.c:(.text+0x3c4): undefined reference to `_sbrk_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.0.2/../../../../arm-elf/lib/thumb/int 
erwork\libc.a(freer.o):
In function `_malloc_trim_r':mallocr.c:(.text+0x2c): undefined
reference to `_sbrk_r'
:mallocr.c:(.text+0x4a): undefined reference to `_sbrk_r'
:mallocr.c:(.text+0x72): undefined reference to `_sbrk_r'

Hat jemand nen Tip, der mich auch die richtige Spur führt?
Gast #363693
Lesenswert?
• ▲
▼
ahhh ok... sorry.. ich hab das hello projekt gefunden, wo die syscalls
drin sind. mitkompiliert und jetzt meckert der linker nicht mehr.

wie ich gesehen habe, wir die newlib verwendet.. kann ich auch die
"standard"-lib benutzten???? oder muss ich für stdio immer die
syscalls selber implementieren?

wird der heap automatisch ans ende vom data segment gepackt oder kann
ich ihn auch woanders hinsetzten?

wie kann ich die größe des heaps bestimmen?
Gast #363694
Lesenswert?
• ▲
▼
- Was soll man unter ""standard"-lib" verstehen? newlib ist eine
libc.
- Zu allgemeinen Informationen betr. syscalls vergl.
newlib-Dokumenation.
- Alternative zu syscalls.c im Projekt: eine Library (.a) mit den
syscalls bauen und bei Bedarf anlinken (vgl.
newlib-lpc/libnewlib-lpc.a) oder eine Toolchain um
controllerspezifische standards ergaenzen und zusammenbauen (vgl.
devkitpro f. gba)
- Wert von Symbol end fuer sbrk kann im Linkerskript und auch an
anderer Stelle auch auf andere Speicheradresse gelegt werden, aber
warum?
- Was ist mit Groesse des Heaps bestimmen gemeint? Maximalgroesse?
Aktueller Speicherverbrauch?

Martin Thomas

Antwort schreiben

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.

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.