Sqrt på Cortex-M3

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Sqrt på Cortex-M3

Inlägg av Korken »

Godagens!

Jag slåss fortfarande med att få floats att fungera 100%.
När jag gör en sqrtf så får jag errorn nedan och jag har ingen aning om hur jag ska fixa detta.
Compiling...
/usr/local/CodeSourcery/bin/arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb --no-builtin-memcpy --no-builtin-memset -std=gnu99 -O1 -g -c ./source/startup.c ./source/system_LPC17xx.c ./source/main.c ./source/misc.c ./source/leds.c ./source/timer.c ./source/uart.c ./source/pwm.c ./source/gps.c ./source/i2c.c ./source/itg3200.c ./source/bma180.c
Done!
Linking...
/usr/local/CodeSourcery/bin/arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb --no-builtin-memcpy --no-builtin-memset -T link.T -Wl,--build-id=none startup.o system_LPC17xx.o main.o misc.o leds.o timer.o uart.o pwm.o gps.o i2c.o itg3200.o bma180.o -o main.elf
main.o: In function `main':
/media/FCB7-6FF5/Quadrocopter/Koder/Quad_code/./source/main.c:33: undefined reference to `sqrtf'
collect2: ld returned 1 exit status
make: *** [main.elf] Error 1
Hat någon en ide? :humm:
Samma sak händer med andra funktioner.
Men multiplikation och division fungerar.

Min Makefil:
CC = /usr/local/CodeSourcery/bin/arm-none-eabi-gcc
COMMON = -mcpu=cortex-m3 -mthumb --no-builtin-memcpy --no-builtin-memset
CFLAGS = $(COMMON) -std=gnu99 -O1 -g
LDFLAGS = $(COMMON) -T link.T -Wl,--build-id=none
DIR = ./source/
SRCC = $(DIR)startup.c $(DIR)system_LPC17xx.c $(DIR)main.c $(DIR)misc.c $(DIR)leds.c
SRCC += $(DIR)timer.c $(DIR)uart.c $(DIR)pwm.c $(DIR)gps.c $(DIR)i2c.c $(DIR)itg3200.c
SRCC += $(DIR)bma180.c
SRCO = startup.o system_LPC17xx.o main.o misc.o leds.o timer.o uart.o pwm.o gps.o i2c.o
SRCO += itg3200.o bma180.o

all: clean main.elf

main.o: $(SRC)
@echo "Compiling..."
$(CC) $(CFLAGS) -c $(SRCC)
@echo "Done!"

main.elf: main.o
@echo "Linking..."
$(CC) $(LDFLAGS) $(SRCO) -o main.elf
@echo "Done!"

clean:
@echo "Cleaning..."
rm -f *.o *.elf
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Re: sqrt på Cortex-M3

Inlägg av rehnmaak »

Jag tror du behöver lägga till -lm för att länka med matte rutinerna.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: sqrt på Cortex-M3

Inlägg av sodjan »

http://www.codesourcery.com/sgpp/portal ... cslibc.pdf

"CSLIBC, The CodeSourcery C Library"

Sidan 19:
This chapter documents the mathematical functions provided by CSLIBC.
In addition to including math.h in your source code, you must link with
the math library (-lm) to use the functions listed in this chapter.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Sqrt på Cortex-M3

Inlägg av Korken »

Oj, glömde skriva att jag har testat med -lm och att länka biblioteket direkt utan att det har hjälpt.
Men tack för länken sodjan. :)
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Re: Sqrt på Cortex-M3

Inlägg av rehnmaak »

Du skulle kunna kolla att det biblioteket verkligen innehåller sqrtf()

kör objdump -t /sökväghär/libm.a | grep sqrtf
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Sqrt på Cortex-M3

Inlägg av Korken »

Har kollat det nu och den finns där.
Jag har nu skrivit egna funktioner för det, men man tycker att det borde fungera.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Sqrt på Cortex-M3

Inlägg av sodjan »

> Oj, glömde skriva att jag har testat med -lm

Jag är inte helt säkert på hur sådant här fungerar, men om du använder
-lm switchen, borde inte det synas i make filen !?

Googlade lite till och hittade bl.a :
http://stackoverflow.com/questions/9068 ... g-in-xcode
I've been reading that by default there is an -mthumb compiler flag which reduces code size by 35%.
However, in a floating-point calculation intensive app like mine, this is not an good option, like apple says.
I'd like to try it out if it changes anything.
Har du provat med "-marm" istället för "-mthumb" ?

Se även : http://stackoverflow.com/questions/2057 ... -thumb-vfp

Och : http://free-electrons.com/doc/arm-linux.odp (Speciellt bild 19 och 20).

"-mthumb-interwork" verkar också ha med detta att göra...

EDIT: La till en PDF av ODP'n ifall du inte kan läsa OO filer...
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar