Forum: Compiler & IDEs WINARM malloc


von Lokko (Gast)


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?

von Lokko (Gast)


Lesenswert?

.. ich bin umsteiger von avrgcc auf winarm ... muss man hier diese
"systemfunktionen" selber coden .. ?

von Lokko (Gast)


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?

von mthomas (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.