www.mikrocontroller.net

Forum: Compiler & IDEs WINARM malloc


Autor: Lokko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Lokko (Gast)
Datum:

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

Autor: Lokko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.
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.

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