cancel
Showing results for 
Search instead for 
Did you mean: 

CMake build error

95lux
Associate II

Hello,

I am developing via a CMake project in VSCode. My build environment got corrupted by trying to mv/rename firmware folders via git. Now i cannot build anymore.

[  1%] Building C object cmake/stm32cubemx/CMakeFiles/FreeRTOS.dir/__/__/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c.o
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h: Assembler messages:
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c:255: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c:255: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c:403: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c:403: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:211: Error: no such instruction: `mrs %edx,basepri'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:212: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:213: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:214: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:215: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:229: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb'
/home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:198: Error: invalid instruction suffix for `ds'
make[2]: *** [cmake/stm32cubemx/CMakeFiles/FreeRTOS.dir/build.make:93: cmake/stm32cubemx/CMakeFiles/FreeRTOS.dir/__/__/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:177: cmake/stm32cubemx/CMakeFiles/FreeRTOS.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
build finished with error(s).

 

I already tried deleting the build folder via `rm -rf build/Debug`

and then regenerate CMake `cube-cmake -S . -B build/Debug`

After that i regenerated the CubeMX project. 
The error persists. 

It looks like CMake is trying to build for an M4 instruction set, despite me having setup H7 in CubeMX.
It worked like a charm before. I am really stuck, would appreciate some help!

Best Jonas

3 REPLIES 3
Nawres GHARBI
ST Employee

Hi @95lux 

Did you made the right adjustments in the Cmakelists.txt file to point on the new FW ? 

 

95lux
Associate II

Sorry, this can be closed. Was a dumb CMake error on my side. 

I had to include the correct toolchain file, when regenerating the build env:

cmake -S . -B build/Debug \
  -G Ninja \
  -DCMAKE_TOOLCHAIN_FILE=./cmake/gcc-arm-none-eabi.cmake

 Thanks for replying!

Best Jonas

Additionally, you can rely on CMakePresets.json, which should already define the toolchain file and the generator:

cmake -S . --preset Debug
cmake --build --preset Debug

 

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.