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
..und habs auch schon: libraries libgcc.a etc. aus ordner .\arm-none-eabi\lib\thumb2\ tricky teufel, dieser stm32 ;)
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.
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
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
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.