Forum: Mikrocontroller und Digitale Elektronik CooCox IDE + GCC richtig aufsetzen


von uboot (Gast)


Lesenswert?

Ich habe die aktuellste Version V1.7.0 von CoIDE geladen und das GCC 
tool chain V4.7.3:
http://www.coocox.org/CooCox_CoIDE.htm
https://launchpad.net/gcc-arm-embedded/+milestone/4.7-2012-q4-major

Leider kann ich nur ohne Optimierung compilieren. Sobald ich irgendeinen 
Optimierungsgrad auswähle, kommt folgende Fehlermeldung:

1
GCC HOME: C:\CooCox\CoIDE\GCC\bin
2
compile:
3
    [mkdir] Skipping C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\TS_Controller\Debug\bin because it already exists.
4
    [mkdir] Skipping C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\TS_Controller\Debug\obj because it already exists.
5
       [cc] 20 total files to be compiled.
6
       [cc] arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Wall -ffunction-sections -g -Os -DUSE_STDPERIPH_DRIVER -c -DSTM32F103RB -DSTM32F10X_MD "-IC:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\inc" "-IC:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\cmsis" "-IC:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\cmsis_boot" "-IC:\Dokumente und Einstellungen\u1\Desktop\TS_Controller" "-IC:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib" "-IC:\Dokumente und Einstellungen\u1\Desktop" "-IC:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\inc" '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_tim.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\cmsis\core_cm3.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\cmsis_boot\system_stm32f10x.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\cmsis_boot\startup\startup_stm32f10x_md.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_pwr.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_gpio.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\main.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_crc.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\fpga_bus.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stdio\printf.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_rcc.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_exti.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_usart.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\syscalls\syscalls.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_flash.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_dma.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\misc.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_wwdg.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_spi.c"' '"C:\Dokumente und Einstellungen\u1\Desktop\TS_Controller\stm_lib\src\stm32f10x_i2c.c"'
7
       [cc] C:\DOKUME~1\u1\LOKALE~1\Temp\ccbbDRJS.s: Assembler messages:
8
       [cc] C:\DOKUME~1\u1\LOKALE~1\Temp\ccbbDRJS.s:508: Error: registers may not be the same -- `strexb r0,r0,[r1]'
9
       [cc] C:\DOKUME~1\u1\LOKALE~1\Temp\ccbbDRJS.s:533: Error: registers may not be the same -- `strexh r0,r0,[r1]'

Jemand eine Idee, woran das liegen kann? Kann Ohne Optimierung nicht 
leben ;)

von Martin B. (gonative)


Lesenswert?

Ich hatte Probleme mit der 4.7 Version, probiere mal die GNU ARM Tools 
4.6.

von Phantomix X. (phantomix)


Lesenswert?

Habe das selbe Problem. Abhilfe schafft wie schon erwähnt das Downgrade 
auf 4.6 vom GCC

Bei Coocox 1.6 ging es gar nicht, mit GCC 4.7 zu arbeiten; bei Coocox 
1.7 haben sie es angeblich gefixt, geht aber halt nur ohne Optimierung.

von uboot (Gast)


Lesenswert?

Ok, Danke für die Rückmeldung. Werde es ausprobieren.

von uboot (Gast)


Lesenswert?

Kann nur bestätigen mit der Version 4.6 ( 
https://launchpad.net/gcc-arm-embedded/4.6 ) geht auch die Optimierung.

von Xenu (Gast)


Lesenswert?

Hatte gerade dasselbe Problem.

Lösung hier: https://github.com/texane/stlink/issues/65

In der core_cm3.c musst Du bei den Funktionen __STREXB und __STREXH das
1
"=r" (result)
 in
1
"=&r" (result)
 ändern.

Sonst nimmt der Compiler für Ziel- und Quellregister denselben Wert, und 
das ist bei diesen Anweisungen nicht erlaubt.

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.