Forum: Mikrocontroller und Digitale Elektronik STM32 - Problem beim Compilieren mit CooCox ([cc] collect2.exe: error: ld returned 1 exit status)


von Jan W. (gaffel-k)


Angehängte Dateien:

Lesenswert?

Hallo,

habe jetzt auch mal angefangen mich in die 32Bit MC's einzuarbeiten. 
Habe ein paar jahre erfahrung mit Atmel's AVR MC's gesammelt, 
programmiere in C und auch in Bascom.

Habe einige Beispiele schon durch und hat auch alles recht gut 
funktioniert, nur komme ich jetzt an ein Problem, wo ich nicht mehr 
weiter weiß.
Sobald ich in dem Code den PWM-Teil gleichzeitig mit dem TIM6 Teil 
initialisieren will, bekomme ich beim Compilieren die Fehlermeldung 
([cc] collect2.exe: error: ld returned 1 exit status)

hier der komplette Log:

-------------------------------------------------
GCC HOME: C:\CooCox\GNUToolsARMEmbedded\472013q1\bin
compile:
    [mkdir] Skipping C:\CooCox\CoIDE\workspace\Test2\Test2\Debug\bin 
because it already exists.
    [mkdir] Skipping C:\CooCox\CoIDE\workspace\Test2\Test2\Debug\obj 
because it already exists.
       [cc] Starting dependency analysis for 9 files.
       [cc] Parsing ..\..\..\cmsis_boot\stm32f4xx.h
       [cc] Parsing ..\..\..\cmsis\core_cm4.h
       [cc] Parsing ..\..\..\cmsis_boot\stm32f4xx_conf.h
       [cc] Parsing ..\..\..\cmsis\core_cmInstr.h
       [cc] Parsing ..\..\..\cmsis\core_cmFunc.h
       [cc] Parsing ..\..\..\cmsis\core_cm4_simd.h
       [cc] 9 files are up to date.
       [cc] 0 files to be recompiled from dependency analysis.
       [cc] 0 total files to be compiled.
       [cc] Starting link
       [cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -g -nostartfiles 
-flto -Wl,-Map=Test2.map -O0 -Wl,--gc-sections -Wl,--entry=main 
-LC:\CooCox\CoIDE\configuration\ProgramData\Test2 
-Wl,-TC:\CooCox\CoIDE\configuration\ProgramData\Test2/arm-gcc-link.ld -g 
-o Test2.elf ..\obj\stm32f4xx_syscfg.o ..\obj\startup_stm32f4xx.o 
..\obj\main.o ..\obj\stm32f4xx_rcc.o ..\obj\stm32f4xx_gpio.o 
..\obj\system_stm32f4xx.o ..\obj\stm32f4xx_exti.o ..\obj\misc.o 
..\obj\stm32f4xx_tim.o
       [cc] C:\Users\JanW\AppData\Local\Temp\ccGUx7Nk.s: Assembler 
messages:
       [cc] C:\Users\JanW\AppData\Local\Temp\ccGUx7Nk.s:266: Error: 
offset out of range
       [cc] C:\Users\JanW\AppData\Local\Temp\ccGUx7Nk.s:267: Error: 
offset out of range
       [cc] lto-wrapper: 
C:\CooCox\GNUToolsARMEmbedded\472013q1\bin\arm-none-eabi-gcc returned 1 
exit status
       [cc] 
c:/coocox/gnutoolsarmembedded/472013q1/bin/../lib/gcc/arm-none-eabi/4.7. 
3/../../../../arm-none-eabi/bin/ld.exe:  lto-wrapper failed
       [cc] collect2.exe: error: ld returned 1 exit status

BUILD FAILED
Total time: 1 second
-------------------------------------------------


Im Anhang mal der ganze Code meiner Main.C.

Ich habe das Gefühl, dass das ein Problem von der CoIDE ist, weil 
einzeln, also PWM ohne TIM6 und TIM6 ohne PWM laufen ohne Probleme.

Ist euch das Problem bekannt, oder sieht doch einer einen Fehler im 
Code?

Vielen dank schon mal,

Jan

von Uwe B. (derexponent)


Lesenswert?

Hi Jan,

deinen Quelltext kann ich mit CoIDE 1.7.0 ohne Fehler
und Warnings compilieren

hab allerdings nicht geprüft ob er auch funktioniert

Gruss Uwe

von Jan W. (gaffel-k)


Lesenswert?

Ich benutze Version 1.7.2. Scheint also echt ein Fehler von CoIde zu 
sein. Gibt's nen Link zur 1.7.0.?

Oder was wäre denn eine Alternative IDE? Empfehlungen? Finde CoIDE recht 
gut eigentlich.

Jan

von Mirosa (Gast)


Lesenswert?

Das ist wohl eher ein Problem mit der LTO Option. Durch das spezielle 
Linken kann es passieren daß einige Sprungziele zu weit von ihrem 
Sprungbefehl entfernt sind. LTO ist mit Vorsicht zu genießen. Bei 
Interrupts gibts dann den nächsten Ärger.

Da gibt es bestimmt einen Haken in den Settings mit dem man LTO 
ein-/ausschalten kann. Also das -flto muss da weg.

von Fanti (Gast)


Lesenswert?

Das LTO Problem kann ich bestätigen, ist leider erst seit 1.7.2 
aufgetreten.
Du musst in configuration den Haken bei "LTO enable" wegmachen.

von Jan W. (gaffel-k)


Lesenswert?

Super, vielen dank euch. Habe den Haken bei "Enable LTO" weggemacht und 
schon funktioniert das ganze. Vielen dank noch mal, jetzt kann es 
weitergehen. Machen echt spaß die 32bit-dinger :-)

Jan

von Daimla (Gast)


Lesenswert?

Mal ne blöde Frage, da ich mit V 1.7.2 vor dem gleichen Problem stehe, 
wo finde ich diese "Enable LTO" Einstellung? Unter "Configuration" ist 
diesbezüglich nichts zu sehen.

von Tobi D. (fanti)


Lesenswert?

Configuration->Link>Options>Enable LTO (4. Eintrag von oben)

Info:
Seit der neuen Version 1.7.5 ist der Haken im Default nicht gesetzt und 
man hat diesen fehler nicht mehr.

von Dr. Sommer (Gast)


Lesenswert?

Welche GCC-Version ist das denn? Ältere haben noch Probleme mit LTO, 
evtl. mal upgraden - LTO ist schließlich gerade auf uC ein 
wünschenswertes Feature.

von interessierter (Gast)


Lesenswert?

mal ne Frage zu den unteren 2/3 deiner main.c:
Woher bekommt man diese Zeilen?
Die kann man sich unmöglich merken, du hast dir das nicht ausgedacht, 
also irgenwie copy´n paste? Vorlagen, libs??

Hab das Teil auch hier und weiß nichts damit anzufangen  :-((

von Jan W. (gaffel-k)


Lesenswert?

Hi,

habe mich einiges durch google gewühlt und viele tuts und anleitungen 
gefunden, u.a. auch hier im mc.net. hier ein paar meiner links, haben 
mir sehr geholfen, transferwissen muss man sich aber schon selbst 
aneignen dann. macht schon spaß das ding....

Beitrag "STM32F4 Timer konfigurieren"

http://eliaselectronics.com/stm32f4-tutorials/stm32f4-gpio-tutorial/

http://www.diller-technologies.de/stm32_wide.html

http://mikrocontroller.bplaced.net/wordpress/?page_id=744#comment-1

Beitrag "STM32F4 Discovery Board + USART"


Mfg

Jan

von Chris B. (cbb)


Lesenswert?

Hi zusammen,

ich programmiere aktuell gerade einen AT91SAM3U4 mit CoIDE.
Ich habe etwas am Code verändert und dann exact diesen Fehler erhalten:
1
[cc] collect2.exe: error: ld returned 1 exit status

Bei mir lag allerdings ein Tippfehler vor, der nicht richtig anzeigt 
wurde. Ich habe eine Funktion mit falschem Namen aufgerufen.
Fehler behoben, konnte ich wieder Compilieren...

Jetzt habe ich im Debuggingmodus direkt im Anschluss das nächste Problem 
und bin ratlos...
Es kommt ein Fenster "Execution is suspended because of error mit diesen 
Meldungen im Detail:

Execution is suspended because of error.
  continue
  Warning:
  Cannot insert breakpoint 6.
  Error accessing memory address 0x821e0: (undocumented errno -1).
  Cannot insert breakpoint 66.
  Error accessing memory address 0x82220: (undocumented errno -1).

Breakpoints kann ich mit Doppelklick plötzlich nicht mehr entfernen.

Liegt ein Fehler in der Einstellung oder im Code vor?
Das Programm sprint auch sofort in den ResetHandler und ich kann im 
Debuggingmodus nichts mehr starten.
Zuvor hatte alles funktioniert, auch mit interrupts.



Viele Grüße

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.