Hallo, Ich bin noch Anfänger in Sachen ARM. Bis jetzt komme ich eigentlich ganz gut zurecht nur als ich versucht habe "sprintf" zu verwenden, gab es einen Linkerfehler: Linking: main.elf arm-elf-gcc -mcpu=arm7tdmi-s -I. -gdwarf-2 -DROM_RUN -DVECTORS_IN_RAM -D__WinARM__ -Os -Wall -Wcast-align -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=Common_WinARM/src/Startup.lst -ICommon_WinARM/inc -Wcast-qual -MD -MP -MF .dep/main.elf.d Common_WinARM/src/Startup.o Common_WinARM/src/swi_handler.o Common_WinARM/src/irq.o Common_WinARM/src/target.o Common_WinARM/src/timer.o main.o --output main.elf -nostartfiles -Wl,-Map=main.map,--cref -lc -lm -lc -lgcc -TCommon_WinARM/LPC2138-ROM.ld d:/programme/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib \libc.a(freer.o): In function `_malloc_trim_r': mallocr.c:(.text+0x48): undefined reference to `_sbrk_r' mallocr.c:(.text+0x64): undefined reference to `_sbrk_r' mallocr.c:(.text+0x84): undefined reference to `_sbrk_r' d:/programme/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib \libc.a(makebuf.o): In function `__smakebuf': makebuf.c:(.text+0x3c): undefined reference to `_fstat_r' makebuf.c:(.text+0x110): undefined reference to `isatty' d:/programme/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib \libc.a(mallocr.o): In function `_malloc_r': mallocr.c:(.text+0x424): undefined reference to `_sbrk_r' mallocr.c:(.text+0x4cc): undefined reference to `_sbrk_r' d:/programme/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib \libc.a(stdio.o): In function `__sclose': stdio.c:(.text+0xc): undefined reference to `_close_r' d:/programme/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib \libc.a(stdio.o): In function `__sseek': stdio.c:(.text+0x30): undefined reference to `_lseek_r' d:/programme/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib \libc.a(stdio.o): In function `__swrite': stdio.c:(.text+0x84): undefined reference to `_lseek_r' stdio.c:(.text+0xac): undefined reference to `_write_r' d:/programme/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib \libc.a(stdio.o): In function `__sread': stdio.c:(.text+0xd0): undefined reference to `_read_r' collect2: ld returned 1 exit status make.exe: *** [main.elf] Error 1 Kann mir da wer helfen? Im Forum habe ich über die Suche nichts gefunden. Also Danke für jede Hilfe!
Du hast eine frische, noch nicht angepasste newlib für deinen Prozessor verwendet. Die newlib Library ist so ausgelegt, dass sie bestimmte vom Programmierer (dir) bereitzustellende Funktionen aufruft. Man nennt diese Funktionen STUB-Funktionen. Das _r ist ein Kennzeichen, dass die Funktionen reentrant programmiert sein sollen. Mehr über das Schreiben dieser STUBS findest du in einer interessanten Artikelserie von Bill Getliff http://www.embedded.com/story/OEG20020103S0073 An dem Datum erkennt du, dass es ein sehr altes Thema ist... dementsprechend ist deine Frage DIE Standardfrage, an der man erkennt, dass ein "Neuer" zur GCC ARM Szene hinzugekommen ist ;-) Du kannst dich auch mit deinem Prozessormodell auf die Suche nach bereits geschriebenen Stub-Funktionen machen. Dazu solltest du dir das Forum http://en.mikrocontroller.net merken und gelegentlich besuchen. Verschiedene Yahoo Gruppen haben auch einen regen ARM-Teilnehmerkreis.
Sorry dass ich euch mit so einer anscheinend typischen Anfängerfrage belästigen musste ^^ Dann beschäftige ich mich mal schön damit... Bei WinAVR ist das einfacher :P Danke nochmal!
> Bei WinAVR ist das einfacher :P Naja, ich sag' nur "make all" geht nicht ;-) Meine Antwort sollte nicht nach "ich fühle mich belästigt klingen". Ich bin selbst nur zwei Schritte vor dir. Wenn du etwas Gas gibst, hast du mich mit dem ARM überholt.
Hallo, habe das gleiche Linkerproblem mit dem sprintf, es liegt wohl an einer alten Library wie bekomme ich den Update in das WinARM? Das ist wohl die aktuelle newlib-lpc_rel_5.zip. Bin ebenfalls seit zwei Tagen auf der WinARM Schiene, die LED blinken schon mal. Danke und schöne Grüße Johann
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.