mikrocontroller.net

Forum: Compiler & IDEs STM32-Float-Ops gehen nicht


Autor: Peter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..und habs auch schon: libraries libgcc.a etc. aus ordner 
.\arm-none-eabi\lib\thumb2\
tricky teufel, dieser stm32 ;)

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: buffalo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Heiko Jakob (buffalo)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.