STM32-Float-Ops gehen nicht

Gast #1100801
Lesenswert?
• ▲
▼
Hallo Arm-Spezialisten,

bin als Arm-Neuling verzweifelt dabei, einem STM32 float-Operationen 
beizubringen.

Habe ein simples Programm, in dem nur eine float-Addition ausgeführt 
wird. Build-Prozess mit letzter Codesourcery-Release (gcc 4.3.2) 
funktioniert (scheinbar). math.h ist includiert.

Sobald ich das Prog mit OOCD auf den uC spiele und per reset run starte, 
bleibt es mit einem HardFault hängen. Kommentiere ich die Addition aus, 
läuft es.

Scheinbar wird die Fkt. __addsf3 nicht richtig ausgeführt(?!)

Habe im Anhang das Makefile dazugehängt. Fehlt noch was?

Hat jemand schon mal ein ähnliches Problem gehabt?


Ein für jeden Hinweis dankbarer
Peter
Angehängte Dateien:
Moderator Persönliche Seite #1457861
Lesenswert?
• ▲
▼
Nicht direkt den Linker (arm-*-ld) aufrufen, sondern mit dem 
compiler-frontend (arm-*-gcc) linken. Dabei Optionen für mcu und thumb 
mitgeben, dann werden "automatisch" die zum Target passenden Libraries 
(libgcc, libc, libm) angebunden. So kann man sich die Bastelei mit 
direkten Pfadangaben sparen.


Edit: hoppla. Grade gemerkt, dass der Ursprungsbeitrag in 
Forum-Zeitrechnung antik ist. Bin über einen anderen Thread 
reingestolpert. Information ist hoffentlich dennoch nützlich für Leute, 
die über die Forensuche hierher gelangen.
Gast #1625765
Lesenswert?
• ▲
▼
Danke für den Tipp !
Ich habe das selbe Problem wie obiger Poster mit den soft float 
Geschichten aus der libgcc (_aeabi...). Anstatt den Linker zu 
verwenden hab ich es jetzt mit dem gcc Frontend versucht. Ich hab jetzt 
das Problem mit den soft float Zeug zwar weg, bekomme dafür aber jetzt 
die libg mit unresolved symbols um die Ohren gehauen, dabei nutz ich 
daraus garnix. Mein Progrämmchen keinen einzigen Funktionsaufruf ausser 
main() !?!

Weis da jemand Rat ?

Danke für alle Antworten die da kommen mögen.

arm-none-eabi-gcc -g -mcpu=cortex-m3 -mthumb -static -Tstm32.ld   -o 
main.elf main.o startup_stm32f10x.o
/home/heiko/opt/crosstools/arm-none-eabi/lib/gcc/arm-none-eabi/4.3.4/../ 
../../../arm-none-eabi/lib/thumb/libg.a(lib_a-exit.o):  In function 
`exit':
exit.c:(.text.exit+0x14): undefined reference to `_exit'
/home/heiko/opt/crosstools/arm-none-eabi/lib/gcc/arm-none-eabi/4.3.4/../ 
../../../arm-none-eabi/lib/thumb/libg.a(lib_a-sbrkr.o):  In function 
`_sbrk_r':
sbrkr.c:(.text._sbrk_r+0xe): undefined reference to `_sbrk'
/home/heiko/opt/crosstools/arm-none-eabi/lib/gcc/arm-none-eabi/4.3.4/../ 
../../../arm-none-eabi/lib/thumb/libg.a(lib_a-writer.o):  In function 
`_write_r':
writer.c:(.text._write_r+0x12): undefined reference to `_write'
/home/heiko/opt/crosstools/arm-none-eabi/lib/gcc/arm-none-eabi/4.3.4/../ 
../../../arm-none-eabi/lib/thumb/libg.a(lib_a-closer.o):  In function 
`_close_r':
closer.c:(.text._close_r+0xe): undefined reference to `_close'
/home/heiko/opt/crosstools/arm-none-eabi/lib/gcc/arm-none-eabi/4.3.4/../ 
../../../arm-none-eabi/lib/thumb/libg.a(lib_a-lseekr.o):  In function 
`_lseek_r':
lseekr.c:(.text._lseek_r+0x12): undefined reference to `_lseek'
/home/heiko/opt/crosstools/arm-none-eabi/lib/gcc/arm-none-eabi/4.3.4/../ 
../../../arm-none-eabi/lib/thumb/libg.a(lib_a-readr.o):  In function 
`_read_r':
readr.c:(.text._read_r+0x12): undefined reference to `_read'
/home/heiko/opt/crosstools/arm-none-eabi/lib/gcc/arm-none-eabi/4.3.4/../ 
../../../arm-none-eabi/lib/thumb/crt0.o:  In function `start':
/home/heiko/opt/crosstools/arm-none-eabi/lib/gcc/arm-none-eabi/4.3.4/../ 
../../../arm-none-eabi/lib/thumb/crt0.o:  In function `start':
collect2: ld returned 1 exit status

P.s. Es ist zum aus der Haut fahren. Die Toolchain macht mich noch 
fertig....

Gruß buffalo
#1625778
Lesenswert?
• ▲
▼
Da hab ich jetzt ewig gesucht ....und ne Frage ins Forum gestellt und 
ein paar Minuten später selber die Antwort gefunden. ... Für alle 
mitleidenden, die Zauberformel lautet:
"arm-none-eabi-gcc -g -nostdlib -mcpu=cortex-m3 -mthumb -static 
-Tstm32.ld   -o main.elf main.o startup_stm32f10x.o -lgcc"

Wichtig ist "-nostdlib" und die libgcc manuell mit "-lgcc" anhängen.

Gruß buffalo

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.