Hallo,
ich verwende das AT91SAM7S64 Board von Olimex zusammen mit dem
ARM-Tiny-USB und der mitgelieferten OpenOCD-Yagarto-Toolchain-Eclipse.
Ich möchte den Befehl sprintf() verwenden. Dazu habe ich stdio.h
eingebunden. Trotzdem kommt die Fehlermeldung: undefined reference to
sprintf
Woran kann dies liegen?
Hier ein Auszug aus dem Makefile:
1 | NAME = demo_at91sam7_h256_blink_flash
|
2 |
|
3 | # variables
|
4 | CC = arm-elf-gcc
|
5 | LD = arm-elf-ld -v -lc
|
6 | AR = arm-elf-ar
|
7 | AS = arm-elf-as
|
8 | CP = arm-elf-objcopy
|
9 | OD = arm-elf-objdump
|
10 |
|
11 | CFLAGS = -I./ -c -fno-common -O0 -g
|
12 | AFLAGS = -ahls -mapcs-32 -o crt.o
|
13 | LFLAGS = -Map main.map -Tdemo_at91sam7_h256_blink_flash.cmd
|
14 | CPFLAGS = --output-target=binary
|
15 | ODFLAGS = -x --syms
|
16 |
|
17 | OBJECTS = crt.o main.o timerisr.o timersetup.o isrsupport.o lowlevelinit.o blinker.o
|
18 |
|
19 |
|
20 | # make target called by Eclipse (Project -> Clean ...)
|
21 | clean:
|
22 | -rm -f $(OBJECTS) crt.lst main.lst main.out main.bin main.hex main.map main.dmp
|
23 |
|
24 |
|
25 | #make target called by Eclipse (Project -> Build Project)
|
26 | all: main.out
|
27 | @ echo "...copying"
|
28 | $(CP) $(CPFLAGS) main.out main.bin
|
29 | $(OD) $(ODFLAGS) main.out > main.dmp
|
30 |
|
31 | main.out: $(OBJECTS) demo_at91sam7_h256_blink_flash.cmd
|
32 | @ echo "..linking"
|
33 | $(LD) $(LFLAGS) -o main.out $(OBJECTS) libgcc.a
|
34 |
|
35 | crt.o: crt.s
|
36 | @ echo ".assembling crt.s"
|
37 | $(AS) $(AFLAGS) crt.s > crt.lst
|
Und hier ein Auszug aus main.c
1 | #include <stdio.h>
|
2 | #include <string.h>
|
3 | #include "AT91SAM7S256.h"
|
4 | #include "board.h"
|
5 |
|
6 |
|
7 | // *******************************************************
|
8 | // Global Variables
|
9 | // *******************************************************
|
10 | unsigned int FiqCount = 0; // global uninitialized variable
|
11 |
|
12 |
|
13 | // *******************************************************
|
14 | // MAIN
|
15 | // ******************************************************/
|
16 | int main (void) {
|
17 | unsigned long j; // loop counter (stack variable)
|
18 | unsigned long IdleCount = 0; // idle loop blink counter (2x)
|
19 |
|
20 | char buff_send[50];
|
21 | unsigned int status;
|
22 |
|
23 | // Initialize the Atmel AT91SAM7S256 (watchdog, PLL clock, default interrupts, etc.)
|
24 | // ---------------------------------------------------------------------------------
|
25 | LowLevelInit();
|
26 |
|
27 |
|
28 | // Turn on the peripheral clock for Timer0
|
29 | // ---------------------------------------
|
30 |
|
31 | // pointer to PMC data structure
|
32 | volatile AT91PS_PMC pPMC = AT91C_BASE_PMC;
|
33 |
|
34 |
|
35 | sprintf((char*)buff_send, "Status: %i\r\n", status);
|
Kann mir da jemand helfen?
Schönen Gruß,
Johannes