From 0d6c458f318d804e4d15c2c3b5fe01a40e43b04c Mon Sep 17 00:00:00 2001 From: zhji Date: Tue, 10 Dec 2024 20:53:33 +0800 Subject: [PATCH] [feat] add makefile for auto --- bootloader/CMakeLists.txt | 57 ++++++++++++++++++++++++++++++++------- bootloader/Makefile | 18 +++++++++++++ 2 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 bootloader/Makefile diff --git a/bootloader/CMakeLists.txt b/bootloader/CMakeLists.txt index 4bd387a..01a1bf3 100644 --- a/bootloader/CMakeLists.txt +++ b/bootloader/CMakeLists.txt @@ -7,7 +7,7 @@ set(SDK_PATH ${CMAKE_CURRENT_SOURCE_DIR}/..) set(BOOTLOADER_PATH ${CMAKE_CURRENT_SOURCE_DIR}) # toolchain path -set(TOOLCHAIN "arm-none-eabi-") +# set(TOOLCHAIN ${CROSS_COMPILE}) set(CMAKE_C_COMPILER "${TOOLCHAIN}gcc") set(CMAKE_ASM_COMPILER "${TOOLCHAIN}gcc") set(CMAKE_OBJCOPY "${TOOLCHAIN}objcopy") @@ -16,17 +16,38 @@ set(CMAKE_AR "${TOOLCHAIN}ar") set(CMAKE_RANLIB "${TOOLCHAIN}ranlib") set(LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/flash.ld") -set(MCU_FLAGS "-mcpu=cortex-m7 -mthumb -g -O2 -Wall -nostartfiles -mfloat-abi=hard -mfpu=fpv5-d16 -ffunction-sections -fdata-sections") -set(CMAKE_C_FLAGS "${MCU_FLAGS}") -set(CMAKE_ASM_FLAGS "${MCU_FLAGS}") -set(CMAKE_EXE_LINKER_FLAGS "${MCU_FLAGS} -T${LINKER_SCRIPT} -Wl,-Map=bootloader.map -Wl,--gc-sections") - -add_definitions(-DSTM32H750xx) - enable_language(ASM) add_executable(${PROJ_NAME}.elf main.c) target_sources(${PROJ_NAME}.elf PUBLIC start.S) +set(CMAKE_C_FLAGS " \ +-mcpu=cortex-m7 \ +-mthumb \ +-g3 \ +-O2 \ +-Wall \ +-nostartfiles \ +-mfloat-abi=hard \ +-mfpu=fpv5-d16 \ +-ffunction-sections \ +-fdata-sections \ +") + +set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS}") + +set(CMAKE_EXE_LINKER_FLAGS " \ +-ffunction-sections \ +-fdata-sections \ +-Wl,--gc-sections \ +-T${LINKER_SCRIPT} \ +-Wl,-Map=${PROJ_NAME}.map \ +--specs=nano.specs \ +-Wl,--print-memory-usage \ +-Wl,--print-output-format \ +") + +add_definitions(-DSTM32H750xx) + add_subdirectory(${SDK_PATH}/driver driver) add_subdirectory(${SDK_PATH}/component component) add_subdirectory(${BOOTLOADER_PATH}/src src) @@ -38,5 +59,23 @@ target_link_libraries(${PROJ_NAME}.elf src) add_custom_command(TARGET ${PROJ_NAME}.elf POST_BUILD COMMAND ${CMAKE_OBJCOPY} -Obinary $ ${BIN_FILE} COMMAND ${CMAKE_OBJDUMP} -d -S $ >${ASM_FILE} - COMMENT "Generate ${BIN_FILE}\r\n" + # COMMENT "Generate ${BIN_FILE}\r\n" + COMMAND echo "Calculating SHA-256 checksum for ${BIN_FILE}:" + COMMAND sha256sum ${BIN_FILE} ) + +# get git tag +execute_process( + COMMAND git describe --abbrev=40 --tags --dirty --always + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_TAG + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET +) +if(GIT_TAG) + set(PROJECT_SDK_VERSION ${GIT_TAG}) +else() + message(WARNING "No Valid version info found for SDK!") + set(PROJECT_SDK_VERSION "version-unknown-panic") +endif() +message(STATUS "Project SDK Version: ${PROJECT_SDK_VERSION}") diff --git a/bootloader/Makefile b/bootloader/Makefile new file mode 100644 index 0000000..6c57e27 --- /dev/null +++ b/bootloader/Makefile @@ -0,0 +1,18 @@ +CMAKE = cmake # use user cmake +cmake_generator = "Unix Makefiles" +RM = $(CMAKE) -E remove_directory +MAKEFLAGS += --no-print-directory + +TOOLCHAIN ?= arm-none-eabi- + +#cmake definition config +cmake_definition+= -DTOOLCHAIN=${TOOLCHAIN} + +build:Makefile + $(CMAKE) -S . -B build -G $(cmake_generator) $(cmake_definition) + $(MAKE) -C build -j + +clean:: + $(RM) build + +.PHONY:build clean