| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- PROJECT(STM32F40G_EVAL LANGUAGES C CXX)
- set(CMAKE_BUILD_TYPE Debug)
- set(CMAKE_EXPORT_COMPILE_COMMANDS ON )
- CMAKE_MINIMUM_REQUIRED(VERSION 3.3)
- ENABLE_LANGUAGE(ASM)
- SET(TARGET stm32f4HAL)
- ADD_DEFINITIONS(-DDEBUG_UART_HANDLE=UartHandle)
- # Remove -rdynamic option from linking that is not supported by arm-none-eabi
- # Also remove "undefined reference to `_sbrk'" error
- set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-specs=nano.specs -specs=nosys.specs")
- set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS})
- SET(CMAKE_C_FLAGS "-mcpu=cortex-m4 -mthumb -mfloat-abi=softfp -Wall -mfpu=fpv4-sp-d16 -Wl,-Map=output.map -Wl,--gc-sections -g3")
- set(STM32_CHIP STM32F407IGH6)
- set(STM_BOARD STM324xG_EVAL)
- set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
- set(CMAKE_TOOLCHAIN_FILE ${CMAKE_MODULE_PATH}/gcc_stm32.cmake)
- include(${CMAKE_TOOLCHAIN_FILE})
- FIND_PACKAGE(Git REQUIRED)
- set(CUBE_SOURCE "${CMAKE_BINARY_DIR}/STM32F4-Cube-Firmware")
- if(EXISTS ${CUBE_SOURCE})
- message("Cube FW directory exists")
- else()
- message("Getting Cube Firmware")
- set(GIT_REPOSITORY "https://github.com/alxhoff/STM32F4-Cube-Firmware.git")
- execute_process(COMMAND ${GIT_EXECUTABLE} clone ${GIT_REPOSITORY} )
- endif()
- set(STM32Cube_DIR ${CUBE_SOURCE})
- FIND_PACKAGE(TFLite REQUIRED)
- SET(TFLITE_PLATFORM micro)
- set(STM32Cube_DIR ${CUBE_SOURCE})
- SET(FREERTOS_HEAP_IMPL 1)
- FIND_PACKAGE(FreeRTOS REQUIRED)
- FIND_PACKAGE(CMSIS REQUIRED)
- FIND_PACKAGE(STM32HAL COMPONENTS sram gpio uart REQUIRED)
- FIND_PACKAGE(STM32LL COMPONENTS fsmc sdmmc REQUIRED)
- FIND_PACKAGE(STM32BSP COMPONENTS sd sram ts io lcd ili9325 stmpe811 REQUIRED)
- INCLUDE_DIRECTORIES(
- ${CMAKE_CURRENT_SOURCE_DIR}
- "${PROJECT_SOURCE_DIR}/Inc"
- ${STM32HAL_INCLUDE_DIR}
- ${STM32LL_INCLUDE_DIR}
- ${CMSIS_INCLUDE_DIRS}
- ${FreeRTOS_INCLUDE_DIRS}
- ${STM32BSP_INCLUDE_DIR}
- ${TFLite_INCLUDE_DIRS}
- )
- file(GLOB PROJECT_SOURCES
- "Src/*.c"
- "Src/*.cc"
- "Src/*.cpp"
- )
- SET(STM32_LINKER_SCRIPT ${CMSIS_LINKER_SCRIPT})
- ADD_EXECUTABLE(
- ${CMAKE_PROJECT_NAME}.elf
- ${PROJECT_SOURCES}
- ${STM32HAL_SOURCES}
- ${STM32BSP_SOURCES}
- ${STM32LL_SOURCES}
- ${FreeRTOS_SOURCES}
- ${TFLite_SOURCES}
- ${CMSIS_SOURCES}
- )
- TARGET_COMPILE_DEFINITIONS(${CMAKE_PROJECT_NAME}.elf PUBLIC STM_BSP)
- ADD_CUSTOM_TARGET(
- flash
- COMMAND ${CMAKE_OBJCOPY} -Obinary ${CMAKE_PROJECT_NAME}.elf ${CMAKE_PROJECT_NAME}.bin # TODO
- COMMAND st-flash write ${CMAKE_PROJECT_NAME}.bin 0x8000000
- )
- ADD_DEPENDENCIES(flash ${CMAKE_PROJECT_NAME}.elf)
- IF(NOT OPENOCD_BOARD)
- FILE(GLOB OPENOCD_BOARD ${PROJECT_SOURCE_DIR}/*.cfg)
- ENDIF()
- ADD_CUSTOM_TARGET(
- debug
- COMMAND openocd -f ${OPENOCD_BOARD} >/dev/null 2>&1 & sleep 2
- COMMAND ${TARGET_TRIPLET}-gdb -quiet -tui -command=${CMAKE_CURRENT_LIST_DIR}/GDBCommands -se ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.elf
- COMMAND killall -15 openocd
- )
- ADD_DEPENDENCIES(debug flash)
- STM32_SET_TARGET_PROPERTIES(${CMAKE_PROJECT_NAME}.elf)
- STM32_ADD_HEX_BIN_TARGETS(${CMAKE_PROJECT_NAME}.elf)
- STM32_PRINT_SIZE_OF_TARGETS(${CMAKE_PROJECT_NAME}.elf)
- # TODO: also clean .bin file on `make clean`
|