Elektroda.pl
Elektroda.pl
X
CControls
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32f103][C] - Zmienna double przekazywana do funkcji - błędy kompilacji

koralgolek 14 Kwi 2013 13:40 1521 3
  • #1 14 Kwi 2013 13:40
    koralgolek
    Poziom 11  

    Korzystam z gotowca Freddie'ego Chopin'a dla uC stm32f103 i używam CodeSourcery. Mam następujący problem:

    Próbuję obliczyć splot korzystając z funkcji:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zmienne size_t zamieniłem na uint16_t. Program nie chce się skompilować. Błędy kompilacji to:

    Code:
    Linking target: out/stm32_blink_led.elf
    
    arm-none-linux-gnueabi-g++ -mcpu=cortex-m3 -mthumb -TSTM32F103xB_rom.ld -g -Wl,-Map=out/stm32_blink_led.map,--cref,--no-warn-mismatch -Wl,--gc-sections -nostartfiles  out/startup.o out/main.o out/GLCD.o out/itoa.o out/gpio.o out/vectors.o out/AsciiLib.o    -o out/stm32_blink_led.elf
    /home/pawel/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.7.2/../../../../arm-none-linux-gnueabi/bin/ld: BFD (Sourcery CodeBench Lite 2012.09-64) 2.23.51.20120829 assertion fail /scratch/jbrown/arm-linux/obj/binutils-src-2012.09-64-arm-none-linux-gnueabi-i686-pc-linux-gnu/bfd/elf32-arm.c:7677
    /home/pawel/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.7.2/../../../../arm-none-linux-gnueabi/bin/ld: BFD (Sourcery CodeBench Lite 2012.09-64) 2.23.51.20120829 assertion fail /scratch/jbrown/arm-linux/obj/binutils-src-2012.09-64-arm-none-linux-gnueabi-i686-pc-linux-gnu/bfd/elf32-arm.c:7677
    /home/pawel/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.7.2/../../../../arm-none-linux-gnueabi/bin/ld: error: required section '.rel.plt' not found in the linker script
    /home/pawel/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.7.2/../../../../arm-none-linux-gnueabi/bin/ld: final link failed: Invalid operation
    collect2: error: ld returned 1 exit status
    make: *** [out/stm32_blink_led.elf] Error 1


    Program kompiluje się jeżeli zamiast double dam np uint16_t.
    Jak tablice dam jako float - program również nie chce sie skompilować - co moze być tego przyczyną?

    0 3
  • CControls
  • #2 14 Kwi 2013 13:49
    BlueDraco
    Specjalista - Mikrokontrolery

    Ja tu nie widzę żadnego błędu kompilacji. Komunikaty pochodzą z konsolidatora.

    0
  • CControls
  • #3 14 Kwi 2013 15:02
    koralgolek
    Poziom 11  

    Rzeczywiście, problem dotyczy konsolidacji. Mimo tego nadal nie jestem w stanie stworzyć pliku wynikowego, który mógłbym wgrać do uC.

    Pytanie nadal aktualne: Dlaczego przekazując do funkcji zmienne float albo double nie jestem w stanie stworzyć programu wykonywalnego?

    EDITED:

    Spróbowałem linaro i na nim poszło bez problemu.

    0
  • #4 14 Kwi 2013 19:36
    Freddie Chopin
    Specjalista - Mikrokontrolery

    koralgolek napisał:
    Spróbowałem linaro i na nim poszło bez problemu.

    Właśnie tyle są warte te toolchainy z codesourcery... Niestety. Proponuję na przyszłość traktować CS jako martwy projekt.

    4\/3!!

    0