Ich versuche, benutzerdefinierte Interrupt-Handler für meinen Cortex M3 bereitzustellen (Referenzhandbuch hier ). ST stellt freundlicherweise eine Standardbibliothek zur Verfügung, die verschiedene Startdateien mit dem Namen "startup_stm32f2xx.s" enthält. Jeder befindet sich je nach IDE in einem anderen Ordner.
Jetzt verwende ich keine IDE (ich kompiliere direkt mit Yagarto, einer modifizierten Version der gcc-Toolchain). Ich habe bereits gefragt, welches Start-up ich verwenden soll. Nachdem ich jetzt alle verfügbaren Startdateien ausprobiert habe, erhalte ich immer den gleichen Fehler:
/startup_stm32f2xx.s:1:0: Fehler: Die Ziel-CPU unterstützt den ARM-Modus nicht
Eine schnelle Google-Suche zeigt, dass dies wahrscheinlich bedeutet, dass der Assembler-Code Anweisungen enthält, die mein ARM nicht verstehen kann. Dies ist überraschend, da der Code für mein Board bereitgestellt wurde.
Wie kann ich die Startdatei kompilieren, die den Interrupt-Vektor auf meinem STM32 definiert?
Bearbeiten: In jeder der Dateien startup_stm32f2xx.s:1:0
steht der Beginn eines Kommentars. Außerdem benutze ich die Flagge -mcpu=cortex-m3
. Hier ist die vollständige Fehlermeldung:
$ make all
arm-none-eabi-gcc -x assembler-with-cpp -c -g -mcpu=cortex-m3 -gdwarf-2 -Wa,-amhls=startup_stm32f2xx.lst startup_stm32f2xx.s -o startup_stm32f2xx.o
startup_stm32f2xx.s:1:0: error: target CPU does not support ARM mode
makefile:46: recipe for target `startup_stm32f2xx.o' failed
make: *** [startup_stm32f2xx.o] Error 1
STM32 toolchain
? Es gibt nur eine STM32 standard library
.