Hi,
I am trying to setup a project with the latest FreeRTOS kernel in combination with stm32f746zg microcontroller (Cortex M7 with fpu). I started without the FreeRTOS kernel and that works on the NUCLEO-F746ZG devboard. Now I tried to compile it with the FreeRTOS kernel, but now I am stuck at this point.
folder structure:
- build
- external
- drivers
- freertos
- src
- main.c
- FreeRTOSConfig.h
- stm32f7xx_hal_conf.h (configuration file for STM32 HAL)
- arm-none-eabi-gcc.cmake
- CMakeLists.txt
- stm32f7.ld
CMakeLists.txt :
cmake_minimum_required(VERSION 3.15.3)
project(stm32)
enable_language(C ASM)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
# FreeRTOS configurations
set(FREERTOS_CONFIG_FILE_DIRECTORY "${CMAKE_SOURCE_DIR}/src" CACHE STRING "")
set(FREERTOS_PORT GCC_ARM_CM7 CACHE STRING "")
add_subdirectory(external)
set(SRC_FILES
external/drivers/cmsis/cmsis_device_f7/Source/Templates/system_stm32f7xx.c
external/drivers/hal/stm32f7xx_hal_driver/Src/stm32f7xx_hal_gpio.c
external/drivers/hal/stm32f7xx_hal_driver/Src/stm32f7xx_hal.c
external/drivers/hal/stm32f7xx_hal_driver/Src/stm32f7xx_hal_cortex.c
external/drivers/hal/stm32f7xx_hal_driver/Src/stm32f7xx_hal_uart.c
external/drivers/hal/stm32f7xx_hal_driver/Src/stm32f7xx_hal_uart_ex.c
external/drivers/hal/stm32f7xx_hal_driver/Src/stm32f7xx_hal_rcc.c
src/main.c
external/drivers/cmsis/cmsis_device_f7/Source/Templates/gcc/startup_stm32f746xx.s
)
set(EXECUTABLE ${PROJECT_NAME}.elf)
add_executable(${EXECUTABLE} ${SRC_FILES})
target_compile_definitions(${EXECUTABLE} PRIVATE
-DUSE_HAL_DRIVER
-DSTM32F746xx
)
target_include_directories(${EXECUTABLE} PRIVATE
external/drivers/cmsis/cmsis_device_f7/Include
external/drivers/cmsis/cmsis_5/CMSIS/Core/Include
external/drivers/hal/stm32f7xx_hal_driver/Inc
external/drivers/hal/stm32f7xx_hal_driver/Inc/Legacy
src
)
target_compile_options(${EXECUTABLE} PRIVATE
-mcpu=cortex-m7
-mthumb
-mfpu=fpv5-sp-d16
-mfloat-abi=hard
-fdata-sections
-ffunction-sections
-fno-strict-aliasing
-Wall
$<$<CONFIG:Debug>:-Og>
)
target_link_options(${EXECUTABLE} PRIVATE
-T${CMAKE_SOURCE_DIR}/stm32f7.ld
-mcpu=cortex-m7
-mthumb
-mfpu=fpv5-sp-d16
-mfloat-abi=hard
-specs=nano.specs
-lc
-lm
-lnosys
-Wl,-Map=${PROJECT_NAME}.map,--cref
-Wl,--gc-sections
-Wl,--print-memory-usage
)
target_link_libraries(${EXECUTABLE} PRIVATE
freertos_kernel)
# Print executable size
add_custom_command(TARGET ${EXECUTABLE}
POST_BUILD
COMMAND arm-none-eabi-size ${EXECUTABLE}
)
# Create bin file & hex file
add_custom_command(TARGET ${EXECUTABLE}
POST_BUILD
COMMAND arm-none-eabi-objcopy -O ihex ${EXECUTABLE} ${PROJECT_NAME}.hex
COMMAND arm-none-eabi-objcopy -O binary ${EXECUTABLE} ${PROJECT_NAME}.bin
)
Output:
dev@virtual-machine:~/workspace/base/build-debug$ cmake -DCMAKE_TOOLCHAIN_FILE=../arm-none-eabi-gcc.cmake -DCMAKE_BUILD_TYPE=Debug ..
-- The C compiler identification is GNU 10.3.1
-- The CXX compiler identification is GNU 10.3.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/arm-none-eabi-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/arm-none-eabi-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/arm-none-eabi-gcc
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dev/workspace/base/build-debug
dev@virtual-machine:~/workspace/base/build-debug$ make
[ 4%] Building C object external/freertos/portable/CMakeFiles/freertos_kernel_port.dir/GCC/ARM_CM7/r0p1/port.c.obj
/tmp/cctHnfI4.s: Assembler messages:
/tmp/cctHnfI4.s:162: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:163: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:164: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:165: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:166: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:186: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:187: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:188: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:189: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:190: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:246: Error: selected processor does not support requested special purpose register -- `msr psp,r0'
/tmp/cctHnfI4.s:247: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:249: Error: selected processor does not support requested special purpose register -- `msr basepri,r0'
/tmp/cctHnfI4.s:282: Error: selected processor does not support requested special purpose register -- `msr msp,r0'
/tmp/cctHnfI4.s:284: Error: selected processor does not support requested special purpose register -- `msr control,r0'
/tmp/cctHnfI4.s:285: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:286: Error: selected processor does not support `cpsie f' in ARM mode
/tmp/cctHnfI4.s:287: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:288: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:327: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:328: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:329: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:330: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:331: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:378: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:379: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:380: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:381: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:382: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:438: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:439: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:440: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:441: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:442: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:476: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:477: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:478: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:479: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:480: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:542: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:543: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:544: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:545: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:546: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:580: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:622: Error: selected processor does not support requested special purpose register -- `mrs r0,psp'
/tmp/cctHnfI4.s:623: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:630: Error: selected processor does not support `vstmdbeq r0!,{s16-s31}' in ARM mode
/tmp/cctHnfI4.s:637: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:638: Error: selected processor does not support requested special purpose register -- `msr basepri,r0'
/tmp/cctHnfI4.s:639: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:640: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:641: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:644: Error: selected processor does not support requested special purpose register -- `msr basepri,r0'
/tmp/cctHnfI4.s:654: Error: selected processor does not support `vldmiaeq r0!,{s16-s31}' in ARM mode
/tmp/cctHnfI4.s:656: Error: selected processor does not support requested special purpose register -- `msr psp,r0'
/tmp/cctHnfI4.s:657: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:699: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:700: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:701: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:702: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:703: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:733: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:832: Error: unexpected character `w' in type specifier
/tmp/cctHnfI4.s:832: Error: bad instruction `ldr.w r0,=0xE000ED88'
/tmp/cctHnfI4.s:871: Error: selected processor does not support requested special purpose register -- `mrs r3,ipsr'
/tmp/cctHnfI4.s:899: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:900: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:901: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:902: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:903: Error: selected processor does not support `cpsie i' in ARM mode
/tmp/cctHnfI4.s:931: Error: selected processor does not support `cpsid i' in ARM mode
/tmp/cctHnfI4.s:932: Error: selected processor does not support requested special purpose register -- `msr basepri,r3'
/tmp/cctHnfI4.s:933: Error: selected processor does not support `isb ' in ARM mode
/tmp/cctHnfI4.s:934: Error: selected processor does not support `dsb ' in ARM mode
/tmp/cctHnfI4.s:935: Error: selected processor does not support `cpsie i' in ARM mode
make[2]: *** [external/freertos/portable/CMakeFiles/freertos_kernel_port.dir/build.make:76: external/freertos/portable/CMakeFiles/freertos_kernel_port.dir/GCC/ARM_CM7/r0p1/port.c.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:184: external/freertos/portable/CMakeFiles/freertos_kernel_port.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
Not sure what is going wrong. Can somebody help me with this issue? I cannot find a proper CMake example similar to my example.