CMAKE_MINIMUM_REQUIRED(VERSION 3.10) SET(CMAKE_SYSTEM_NAME Generic) SET(CMAKE_SYSTEM_PROCESSOR cortex-m7) #SET(CMAKE_VERBOSE_MAKEFILE ON) SET(CMAKE_EXPORT_COMPILE_COMMANDS ON) SET(CMAKE_C_COMPILER "C:/tool/rtthread/env-windows/tools/bin/../../tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-gcc.exe") SET(CMAKE_ASM_COMPILER "C:/tool/rtthread/env-windows/tools/bin/../../tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-gcc.exe") SET(CMAKE_C_FLAGS " -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -std=c99") SET(CMAKE_ASM_FLAGS " -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -x assembler-with-cpp -Wa,-mimplicit-it=thumb -gdwarf-2") SET(CMAKE_C_COMPILER_WORKS TRUE) SET(CMAKE_CXX_COMPILER "C:/tool/rtthread/env-windows/tools/bin/../../tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-g++.exe") SET(CMAKE_CXX_FLAGS " -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g") SET(CMAKE_CXX_COMPILER_WORKS TRUE) SET(CMAKE_OBJCOPY "C:/tool/rtthread/env-windows/tools/bin/../../tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-objcopy.exe") SET(CMAKE_SIZE "C:/tool/rtthread/env-windows/tools/bin/../../tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-size.exe") SET(CMAKE_EXE_LINKER_FLAGS " -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T ${CMAKE_SOURCE_DIR}/board/linker_scripts/link.lds -Wl,--gc-sections,--print-memory-usage") SET(CMAKE_C_STANDARD 99) SET(CMAKE_CXX_STANDARD 17) PROJECT(rtthread C CXX ASM) INCLUDE_DIRECTORIES( . applications applications/common applications/controller applications/erpc applications/erpc/service applications/erpc/client applications/erpc/common applications/erpc/proto/generated applications/planner applications/servo_manager board board/CubeMX_Config/Inc board/ports/usb board/ports/fal libraries/HAL_Drivers/CMSIS/Include packages/erpc-1.14.0/erpc_c packages/erpc-1.14.0/erpc_c/config packages/erpc-1.14.0/erpc_c/infra packages/erpc-1.14.0/erpc_c/port packages/erpc-1.14.0/erpc_c/setup packages/erpc-1.14.0/erpc_c/transports packages/littlefs-latest rt-thread/include rt-thread/libcpu/arm/common rt-thread/libcpu/arm/cortex-m7 rt-thread/components/dfs/dfs_v1/include rt-thread/components/dfs/dfs_v1/filesystems/devfs rt-thread/components/drivers/include rt-thread/components/drivers/ktime rt-thread/components/drivers/ktime/inc rt-thread/components/drivers/phy rt-thread/components/drivers/smp_call rt-thread/components/drivers/spi rt-thread/components/drivers/usb/cherryusb rt-thread/components/drivers/usb/cherryusb/common rt-thread/components/drivers/usb/cherryusb/core rt-thread/components/drivers/usb/cherryusb/class/hub rt-thread/components/drivers/usb/cherryusb/class/cdc rt-thread/components/drivers/usb/cherryusb/class/msc rt-thread/components/drivers/usb/cherryusb/class/hid rt-thread/components/drivers/usb/cherryusb/class/audio rt-thread/components/drivers/usb/cherryusb/class/video rt-thread/components/drivers/usb/cherryusb/class/wireless rt-thread/components/drivers/usb/cherryusb/class/midi rt-thread/components/drivers/usb/cherryusb/class/adb rt-thread/components/drivers/usb/cherryusb/class/dfu rt-thread/components/drivers/usb/cherryusb/class/vendor/net rt-thread/components/drivers/usb/cherryusb/class/vendor/serial rt-thread/components/drivers/usb/cherryusb/class/vendor/wifi rt-thread/components/drivers/usb/cherryusb/osal rt-thread/components/fal/inc rt-thread/components/finsh rt-thread/components/libc/compilers/common/include rt-thread/components/libc/compilers/newlib rt-thread/components/libc/cplusplus rt-thread/components/libc/posix/delay rt-thread/components/libc/posix/io/epoll rt-thread/components/libc/posix/io/eventfd rt-thread/components/libc/posix/io/poll rt-thread/components/libc/posix/ipc rt-thread/components/libc/posix/pthreads rt-thread/components/libc/posix/tls rt-thread/components/net/utest libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Inc libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Include libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Inc/Legacy libraries/HAL_Drivers/drivers libraries/HAL_Drivers/drivers/config libraries/HAL_Drivers/drivers/drv_flash libraries/HAL_Drivers ) ADD_DEFINITIONS( -DSTM32H750xx -DLFS_CONFIG=lfs_config.h -D__RTTHREAD__ -DRT_USING_NEWLIBC -DRT_USING_LIBC -D_POSIX_C_SOURCE=1 -DUSE_HAL_DRIVER ) # Library source files SET(RT_APP_ERPC_SOURCES applications/erpc/proto/generated/file_service_interface.cpp applications/erpc/proto/generated/servo_service_server.cpp applications/erpc/service/src/file_service_impl.cpp applications/erpc/service/src/erpc_server_main.cpp applications/erpc/proto/generated/file_service_server.cpp applications/erpc/service/src/servo_service_impl.cpp applications/erpc/proto/generated/servo_service_interface.cpp applications/erpc/common/src/erpc_error_handler.cpp ) SET(RT_APPLICATIONS_SOURCES applications/main.cpp ) SET(RT_CHERRYUSB_SOURCES rt-thread/components/drivers/usb/cherryusb/core/usbd_core.c rt-thread/components/drivers/usb/cherryusb/port/dwc2/usb_glue_st.c rt-thread/components/drivers/usb/cherryusb/class/msc/usbd_msc.c rt-thread/components/drivers/usb/cherryusb/port/dwc2/usb_dc_dwc2.c rt-thread/components/drivers/usb/cherryusb/platform/rtthread/usb_msh.c rt-thread/components/drivers/usb/cherryusb/class/cdc/usbd_cdc_acm.c rt-thread/components/drivers/usb/cherryusb/platform/rtthread/usb_check.c rt-thread/components/drivers/usb/cherryusb/osal/usb_osal_rtthread.c ) SET(RT_COMMON_SOURCES applications/common/curve/src/s_curve.cpp ) SET(RT_COMPILER_SOURCES rt-thread/components/libc/compilers/common/cctype.c rt-thread/components/libc/compilers/common/cstdlib.c rt-thread/components/libc/compilers/common/cstring.c rt-thread/components/libc/compilers/common/ctime.c rt-thread/components/libc/compilers/common/cunistd.c rt-thread/components/libc/compilers/common/cwchar.c rt-thread/components/libc/compilers/newlib/syscalls.c ) SET(RT_CONTROLLER_SOURCES applications/controller/src/pid_controller.cpp applications/planner/s_curve_planner/src/s_curve_position_planner.cpp applications/planner/s_curve_planner/src/s_curve_velocity_planner.cpp ) SET(RT_CPP_SOURCES rt-thread/components/libc/cplusplus/cxx_crt_init.c rt-thread/components/libc/cplusplus/cxx_crt.cpp ) SET(RT_DEVICEDRIVERS_SOURCES rt-thread/components/drivers/core/device.c rt-thread/components/drivers/ipc/completion_comm.c rt-thread/components/drivers/ipc/completion_up.c rt-thread/components/drivers/ipc/condvar.c rt-thread/components/drivers/ipc/dataqueue.c rt-thread/components/drivers/ipc/pipe.c rt-thread/components/drivers/ipc/ringblk_buf.c rt-thread/components/drivers/ipc/ringbuffer.c rt-thread/components/drivers/ipc/waitqueue.c rt-thread/components/drivers/ipc/workqueue.c rt-thread/components/drivers/misc/adc.c rt-thread/components/drivers/misc/rt_drv_pwm.c rt-thread/components/drivers/mtd/mtd_nor.c rt-thread/components/drivers/pin/dev_pin.c rt-thread/components/drivers/serial/dev_serial.c rt-thread/components/drivers/spi/dev_qspi_core.c rt-thread/components/drivers/spi/dev_spi.c rt-thread/components/drivers/spi/dev_spi_core.c ) SET(RT_DRIVERS_SOURCES board/CubeMX_Config/Src/stm32h7xx_hal_msp.c board/board.c board/ports/fal/fal_flashfs.c board/ports/usb/usb_cdc_char_device.c board/ports/usb/usb_cdc_init.c libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Source/Templates/gcc/startup_stm32h750xx.s libraries/HAL_Drivers/drivers/drv_adc.c libraries/HAL_Drivers/drivers/drv_flash/drv_flash_h7.c libraries/HAL_Drivers/drivers/drv_gpio.c libraries/HAL_Drivers/drivers/drv_pwm.c libraries/HAL_Drivers/drivers/drv_qspi.c libraries/HAL_Drivers/drivers/drv_spi.c libraries/HAL_Drivers/drivers/drv_tim.c libraries/HAL_Drivers/drivers/drv_usart.c libraries/HAL_Drivers/drv_common.c ) SET(RT_ERPC_SOURCES packages/erpc-1.14.0/erpc_c/setup/erpc_setup_usb_cdc.cpp packages/erpc-1.14.0/erpc_c/port/erpc_threading_pthreads.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_server.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_simple_server.cpp packages/erpc-1.14.0/erpc_c/port/erpc_port_rtt.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_transport_arbitrator.cpp packages/erpc-1.14.0/erpc_c/setup/erpc_setup_mbf_dynamic.cpp packages/erpc-1.14.0/erpc_c/setup/erpc_server_setup.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_message_loggers.cpp packages/erpc-1.14.0/erpc_c/transports/erpc_inter_thread_buffer_transport.cpp packages/erpc-1.14.0/erpc_c/setup/erpc_setup_mbf_static.cpp packages/erpc-1.14.0/erpc_c/transports/erpc_usb_cdc_transport.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_pre_post_action.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_message_buffer.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_basic_codec.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_framed_transport.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_crc16.cpp ) SET(RT_FAL_SOURCES rt-thread/components/fal/src/fal.c rt-thread/components/fal/src/fal_flash.c rt-thread/components/fal/src/fal_partition.c rt-thread/components/fal/src/fal_rtt.c ) SET(RT_FILESYSTEM_SOURCES rt-thread/components/dfs/dfs_v1/filesystems/devfs/devfs.c rt-thread/components/dfs/dfs_v1/src/dfs.c rt-thread/components/dfs/dfs_v1/src/dfs_file.c rt-thread/components/dfs/dfs_v1/src/dfs_fs.c rt-thread/components/dfs/dfs_v1/src/dfs_posix.c ) SET(RT_FINSH_SOURCES rt-thread/components/finsh/msh.c rt-thread/components/finsh/msh_parse.c rt-thread/components/finsh/shell.c rt-thread/components/finsh/cmd.c rt-thread/components/finsh/msh_file.c ) SET(RT_KERNEL_SOURCES rt-thread/src/clock.c rt-thread/src/components.c rt-thread/src/cpu_up.c rt-thread/src/defunct.c rt-thread/src/idle.c rt-thread/src/ipc.c rt-thread/src/irq.c rt-thread/src/kservice.c rt-thread/src/mem.c rt-thread/src/mempool.c rt-thread/src/object.c rt-thread/src/scheduler_comm.c rt-thread/src/scheduler_up.c rt-thread/src/thread.c rt-thread/src/timer.c ) SET(RT_KLIBC_SOURCES rt-thread/src/klibc/kstdio.c rt-thread/src/klibc/rt_vsscanf.c rt-thread/src/klibc/kstring.c rt-thread/src/klibc/kerrno.c ) SET(RT_KTIME_SOURCES rt-thread/components/drivers/ktime/src/hrtimer.c rt-thread/components/drivers/ktime/src/boottime.c rt-thread/components/drivers/ktime/src/cputimer.c ) SET(RT_LIBCPU_SOURCES rt-thread/libcpu/arm/common/atomic_arm.c rt-thread/libcpu/arm/common/div0.c rt-thread/libcpu/arm/common/showmem.c rt-thread/libcpu/arm/cortex-m7/context_gcc.S rt-thread/libcpu/arm/cortex-m7/cpu_cache.c rt-thread/libcpu/arm/cortex-m7/cpuport.c ) SET(RT_LIBRARIES_SOURCES libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cryp_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sram.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Source/Templates/system_stm32h7xx.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rng.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_nor.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_usart.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_lptim.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_comp.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cec.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cryp.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.c ) SET(RT_LITTLEFS_SOURCES packages/littlefs-latest/lfs_util.c packages/littlefs-latest/lfs_crc.c packages/littlefs-latest/dfs_lfs.c packages/littlefs-latest/lfs.c ) SET(RT_POSIX_SOURCES rt-thread/components/libc/posix/delay/delay.c rt-thread/components/libc/posix/pthreads/pthread.c rt-thread/components/libc/posix/pthreads/pthread_attr.c rt-thread/components/libc/posix/pthreads/pthread_barrier.c rt-thread/components/libc/posix/pthreads/pthread_cond.c rt-thread/components/libc/posix/pthreads/pthread_mutex.c rt-thread/components/libc/posix/pthreads/pthread_rwlock.c rt-thread/components/libc/posix/pthreads/pthread_spin.c rt-thread/components/libc/posix/pthreads/pthread_tls.c rt-thread/components/libc/posix/pthreads/sched.c rt-thread/components/libc/posix/tls/emutls.c ) SET(RT_SERVO_CONTROL_SOURCES applications/servo_manager/src/servo_manager.cpp applications/servo_manager/src/servo_control.cpp applications/servo_manager/src/servo_driver.cpp ) SET(RT_UTC_UTEST_SOURCES ) SET(RT_UTESTCASES_SOURCES ) # Library search paths # Library local macro definitions SET(RT_DEVICEDRIVERS_DEFINES __RT_IPC_SOURCE__ ) SET(RT_KERNEL_DEFINES __RT_KERNEL_SOURCE__ ) # Library dependencies SET(RT_COMPILER_LIBS c m ) # Libraries ADD_LIBRARY(rtt_app_erpc OBJECT ${RT_APP_ERPC_SOURCES}) ADD_LIBRARY(rtt_CherryUSB OBJECT ${RT_CHERRYUSB_SOURCES}) ADD_LIBRARY(rtt_common OBJECT ${RT_COMMON_SOURCES}) ADD_LIBRARY(rtt_Compiler OBJECT ${RT_COMPILER_SOURCES}) ADD_LIBRARY(rtt_controller OBJECT ${RT_CONTROLLER_SOURCES}) ADD_LIBRARY(rtt_CPP OBJECT ${RT_CPP_SOURCES}) ADD_LIBRARY(rtt_DeviceDrivers OBJECT ${RT_DEVICEDRIVERS_SOURCES}) ADD_LIBRARY(rtt_Drivers OBJECT ${RT_DRIVERS_SOURCES}) ADD_LIBRARY(rtt_erpc OBJECT ${RT_ERPC_SOURCES}) ADD_LIBRARY(rtt_Fal OBJECT ${RT_FAL_SOURCES}) ADD_LIBRARY(rtt_Filesystem OBJECT ${RT_FILESYSTEM_SOURCES}) ADD_LIBRARY(rtt_Finsh OBJECT ${RT_FINSH_SOURCES}) ADD_LIBRARY(rtt_Kernel OBJECT ${RT_KERNEL_SOURCES}) ADD_LIBRARY(rtt_klibc OBJECT ${RT_KLIBC_SOURCES}) ADD_LIBRARY(rtt_ktime OBJECT ${RT_KTIME_SOURCES}) ADD_LIBRARY(rtt_libcpu OBJECT ${RT_LIBCPU_SOURCES}) ADD_LIBRARY(rtt_Libraries OBJECT ${RT_LIBRARIES_SOURCES}) ADD_LIBRARY(rtt_littlefs OBJECT ${RT_LITTLEFS_SOURCES}) ADD_LIBRARY(rtt_POSIX OBJECT ${RT_POSIX_SOURCES}) ADD_LIBRARY(rtt_servo_control OBJECT ${RT_SERVO_CONTROL_SOURCES}) # Interface libraries ADD_LIBRARY(rtt_utc_UTest INTERFACE) ADD_LIBRARY(rtt_utestcases INTERFACE) # Private macros TARGET_COMPILE_DEFINITIONS(rtt_DeviceDrivers PRIVATE ${RT_DEVICEDRIVERS_DEFINES}) TARGET_COMPILE_DEFINITIONS(rtt_Kernel PRIVATE ${RT_KERNEL_DEFINES}) # Interface library search paths TARGET_LINK_LIBRARIES(rtt_Compiler INTERFACE ${RT_COMPILER_LIBS}) ADD_EXECUTABLE(${CMAKE_PROJECT_NAME}.elf ${RT_APPLICATIONS_SOURCES}) TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME}.elf rtt_app_erpc rtt_CherryUSB rtt_common rtt_Compiler rtt_controller rtt_CPP rtt_DeviceDrivers rtt_Drivers rtt_erpc rtt_Fal rtt_Filesystem rtt_Finsh rtt_Kernel rtt_klibc rtt_ktime rtt_libcpu rtt_Libraries rtt_littlefs rtt_POSIX rtt_servo_control rtt_utc_UTest rtt_utestcases ) ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME}.elf POST_BUILD COMMAND ${CMAKE_OBJCOPY} -O binary ${CMAKE_PROJECT_NAME}.elf rtthread.bin COMMAND ${CMAKE_SIZE} ${CMAKE_PROJECT_NAME}.elf ) # if custom.cmake is exist, add it if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/custom.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/custom.cmake) endif()