diff --git a/.gitignore b/.gitignore index ad7b942..685facd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ bootloader/build/* lark1fq/build/* test/build/* +tools/*.exe +tools/*.xls .vscode/* - diff --git a/bootloader/CMakeLists.txt b/bootloader/CMakeLists.txt index a1d8ed3..e32c9fc 100755 --- a/bootloader/CMakeLists.txt +++ b/bootloader/CMakeLists.txt @@ -14,10 +14,31 @@ set(CMAKE_AR "${TOOLCHAIN}ar") set(CMAKE_RANLIB "${TOOLCHAIN}ranlib") set(LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/flash.ld") -set(MCU_FLAGS "-mcpu=cortex-m4 -mthumb -g -O2 -Wall -nostartfiles -mfloat-abi=hard -mfpu=vfpv4-d16 -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") +set(CMAKE_C_FLAGS " \ +-mcpu=cortex-m4 \ +-mthumb \ +-g3 \ +-O2 \ +-Wall \ +-nostartfiles \ +-mfloat-abi=hard \ +-mfpu=vfpv4-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(-DSTM32F40_41xxx) add_definitions(-DUSE_STDPERIPH_DRIVER) @@ -37,5 +58,24 @@ 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 size ${PROJ_NAME}.elf + 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 diff --git a/bootloader/flash.ld b/bootloader/flash.ld index aeb029e..6dbb96d 100755 --- a/bootloader/flash.ld +++ b/bootloader/flash.ld @@ -1,14 +1,15 @@ ENTRY(Reset_Handler) +StackSize = 0x4000; /* 16KB */ + MEMORY { FLASH (rx) :ORIGIN = 0x08000000, LENGTH = 128K RAM (xrw) :ORIGIN = 0x20000000, LENGTH = 112K - CCM (rw) :ORIGIN = 0x10000000, LENGTH = 48K - CCM_STACK (rw) :ORIGIN = 0x1000C000, LENGTH = 16K + CCM (rw) :ORIGIN = 0x10000000, LENGTH = 64K - StackSize } -_stack_top = ORIGIN(CCM_STACK) + LENGTH(CCM_STACK); +_stack_top = ORIGIN(CCM) + LENGTH(CCM) + StackSize; SECTIONS { diff --git a/lark1fq/CMakeLists.txt b/lark1fq/CMakeLists.txt index 329ed19..e47c1b3 100755 --- a/lark1fq/CMakeLists.txt +++ b/lark1fq/CMakeLists.txt @@ -14,10 +14,31 @@ set(CMAKE_AR "${TOOLCHAIN}ar") set(CMAKE_RANLIB "${TOOLCHAIN}ranlib") set(LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/flash.ld") -set(MCU_FLAGS "-mcpu=cortex-m4 -mthumb -g -O2 -Wall -nostartfiles -mfloat-abi=hard -mfpu=vfpv4-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=lark1fq.map") +set(CMAKE_C_FLAGS " \ +-mcpu=cortex-m4 \ +-mthumb \ +-g3 \ +-O2 \ +-Wall \ +-nostartfiles \ +-mfloat-abi=hard \ +-mfpu=vfpv4-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(-DSTM32F40_41xxx) add_definitions(-DUSE_STDPERIPH_DRIVER) @@ -40,5 +61,24 @@ target_link_libraries(${PROJ_NAME}.elf m) # math library 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 size ${PROJ_NAME}.elf + 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/lark1fq/Makefile b/lark1fq/Makefile new file mode 100644 index 0000000..6c57e27 --- /dev/null +++ b/lark1fq/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 diff --git a/lark1fq/flash.ld b/lark1fq/flash.ld index b7736c5..0022282 100755 --- a/lark1fq/flash.ld +++ b/lark1fq/flash.ld @@ -1,14 +1,15 @@ ENTRY(Reset_Handler) +StackSize = 0x4000; /* 16KB */ + MEMORY { FLASH (rx) :ORIGIN = 0x08020000, LENGTH = 384K RAM (xrw) :ORIGIN = 0x20000000, LENGTH = 112K - CCM (rw) :ORIGIN = 0x10000000, LENGTH = 48K - CCM_STACK (rw) :ORIGIN = 0x1000C000, LENGTH = 16K + CCM (rw) :ORIGIN = 0x10000000, LENGTH = 64K - StackSize } -_stack_top = ORIGIN(CCM_STACK) + LENGTH(CCM_STACK); +_stack_top = ORIGIN(CCM) + LENGTH(CCM) + StackSize; SECTIONS {