diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..fe7de82 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,160 @@ +cmake_minimum_required(VERSION 3.10) + +project(STM32H750VBT6_LwESP) + +enable_language(CXX) +enable_language(ASM) + +# Extra CFlags +set(TARGET_CFLAGS_EXTRA "-Og") +set(TARGET_CFLAGS_EXTRA "-Og") +set(TARGET_LDFLAGS_EXTRA "-Wl,--print-memory-usage") + +# Different linker scripts +set(TARGET_LDSCRIPT_FLASH "${CMAKE_SOURCE_DIR}/STM32H750VBTx_FLASH.ld") +set(TARGET_LDSCRIPT_RAM "${CMAKE_SOURCE_DIR}/STM32H750VBTx_RAM.ld") + +# Copy them from Makefile +set(TARGET_C_SOURCES + "Core/Src/main.c" + "Core/Src/stm32h7xx_it.c" + "Core/Src/stm32h7xx_hal_msp.c" + "Core/Src/stm32h7xx_hal_timebase_tim.c" + "Core/Src/system_stm32h7xx.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd_ex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rng.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rng_ex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rtc.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rtc_ex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c" + "Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_usb.c" + "Middlewares/Third_Party/FreeRTOS/Source/croutine.c" + "Middlewares/Third_Party/FreeRTOS/Source/event_groups.c" + "Middlewares/Third_Party/FreeRTOS/Source/list.c" + "Middlewares/Third_Party/FreeRTOS/Source/queue.c" + "Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c" + "Middlewares/Third_Party/FreeRTOS/Source/tasks.c" + "Middlewares/Third_Party/FreeRTOS/Source/timers.c" + "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c" + "Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c" + "Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c" +) + +# Copy them from Makefile +set(TARGET_ASM_SOURCES + "startup_stm32h750xx.s" +) + +# Copy them from Makefile +set(TARGET_C_DEFINES + "STM32H750xx" + "USE_HAL_DRIVER" +) + +set(TARGET_C_DEFINES_RAM + "VECT_TAB_SRAM" + "USER_VECT_TAB_ADDRESS" + "DATA_IN_D2_SRAM" +) + +# Copy them from Makefile +set(TARGET_C_INCLUDES + "Core/Inc" + "Drivers/STM32H7xx_HAL_Driver/Inc" + "Drivers/STM32H7xx_HAL_Driver/Inc/Legacy" + "Drivers/CMSIS/Device/ST/STM32H7xx/Include" + "Drivers/CMSIS/Include" + "Middlewares/Third_Party/FreeRTOS/Source/include" + "Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2" + "Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F" +) + +# Shared libraries linked with application +set(TARGET_LIBS +) + +# Shared library and linker script search paths +set(TARGET_LIB_DIRECTORIES +) + +# Device specific settings, goes to CFLAGS and LDFLAGS +set(TARGET_CFLAGS_HARDWARE "-mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb") + +# Conditional flags +# DEBUG +set(CMAKE_C_FLAGS_DEBUG "-DDEBUG -Og -g") +set(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG -Og -g") +set(CMAKE_ASM_FLAGS_DEBUG "-DDEBUG -Og -g") + +# RELEASE +set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2 -flto") +set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O2 -flto") +set(CMAKE_ASM_FLAGS_RELEASE "-DNDEBUG -O2 -flto") +set(CMAKE_EXE_LINKER_FLAGS_DEBUG "-flto") + +# Final compiler flags +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TARGET_CFLAGS_HARDWARE} ${TARGET_CFLAGS_EXTRA} -Wall -fdata-sections -ffunction-sections") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TARGET_CFLAGS_HARDWARE} ${TARGET_CXXFLAGS_EXTRA} -Wall -fdata-sections -ffunction-sections") +set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${TARGET_CMAKE_C_FLAGS} -x assembler-with-cpp") +set(CMAKE_EXE_LINKER_FLAGS "-specs=nano.specs -Wl,--gc-sections -lc -lm -lnosys ${TARGET_LDFLAGS_EXTRA}") + +# Include sub directories here + +# Shared sources, includes and definitions +add_compile_definitions(${TARGET_C_DEFINES}) +include_directories(${TARGET_C_INCLUDES}) +link_directories(${TARGET_LIB_DIRECTORIES}) +link_libraries(${TARGET_LIBS}) + +# Main targets are added here + +# **** Internal Flash **** + +# Create ELF +add_executable("${CMAKE_PROJECT_NAME}_FLASH.elf" ${TARGET_C_SOURCES} ${TARGET_ASM_SOURCES}) +target_link_options("${CMAKE_PROJECT_NAME}_FLASH.elf" + PRIVATE "-T${TARGET_LDSCRIPT_FLASH}" + PRIVATE "-Wl,-Map=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}_FLASH.map,--cref" +) + +add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_FLASH.hex" + COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_FLASH.elf" "${CMAKE_PROJECT_NAME}_FLASH.hex" + DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.elf" +) +add_custom_target("${CMAKE_PROJECT_NAME}_FLASH_HEX" DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.hex") + +# **** All In SRAM **** + +# Create ELF +add_executable("${CMAKE_PROJECT_NAME}_RAM.elf" ${TARGET_C_SOURCES} ${TARGET_ASM_SOURCES}) +target_link_options("${CMAKE_PROJECT_NAME}_RAM.elf" + PRIVATE "-T${TARGET_LDSCRIPT_RAM}" + PRIVATE "-Wl,-Map=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}_RAM.map,--cref" +) +target_compile_definitions("${CMAKE_PROJECT_NAME}_RAM.elf" PRIVATE ${TARGET_C_DEFINES_RAM}) + +add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_RAM.hex" + COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_RAM.elf" "${CMAKE_PROJECT_NAME}_RAM.hex" + DEPENDS "${CMAKE_PROJECT_NAME}_RAM.elf" +) +add_custom_target("${CMAKE_PROJECT_NAME}_RAM_HEX" DEPENDS "${CMAKE_PROJECT_NAME}_RAM.hex") \ No newline at end of file diff --git a/Makefile b/Makefile deleted file mode 100644 index 9fc76d7..0000000 --- a/Makefile +++ /dev/null @@ -1,213 +0,0 @@ -########################################################################################################################## -# File automatically-generated by tool: [projectgenerator] version: [3.15.2] date: [Wed Dec 15 21:57:12 CST 2021] -########################################################################################################################## - -# ------------------------------------------------ -# Generic Makefile (based on gcc) -# -# ChangeLog : -# 2017-02-10 - Several enhancements + project update mode -# 2015-07-22 - first version -# ------------------------------------------------ - -###################################### -# target -###################################### -TARGET = STM32H750VBT6_LwESP - - -###################################### -# building variables -###################################### -# debug build? -DEBUG = 1 -# optimization -OPT = -Og - - -####################################### -# paths -####################################### -# Build path -BUILD_DIR = build - -###################################### -# source -###################################### -# C sources -C_SOURCES = \ -Core/Src/main.c \ -Core/Src/freertos.c \ -Core/Src/stm32h7xx_it.c \ -Core/Src/stm32h7xx_hal_msp.c \ -Core/Src/stm32h7xx_hal_timebase_tim.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rng.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rng_ex.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c \ -Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c \ -Core/Src/system_stm32h7xx.c \ -Middlewares/Third_Party/FreeRTOS/Source/croutine.c \ -Middlewares/Third_Party/FreeRTOS/Source/event_groups.c \ -Middlewares/Third_Party/FreeRTOS/Source/list.c \ -Middlewares/Third_Party/FreeRTOS/Source/queue.c \ -Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c \ -Middlewares/Third_Party/FreeRTOS/Source/tasks.c \ -Middlewares/Third_Party/FreeRTOS/Source/timers.c \ -Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c \ -Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c \ -Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c - -# ASM sources -ASM_SOURCES = \ -startup_stm32h750xx.s - - -####################################### -# binaries -####################################### -PREFIX = arm-none-eabi- -# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx) -# either it can be added to the PATH environment variable. -ifdef GCC_PATH -CC = $(GCC_PATH)/$(PREFIX)gcc -AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp -CP = $(GCC_PATH)/$(PREFIX)objcopy -SZ = $(GCC_PATH)/$(PREFIX)size -else -CC = $(PREFIX)gcc -AS = $(PREFIX)gcc -x assembler-with-cpp -CP = $(PREFIX)objcopy -SZ = $(PREFIX)size -endif -HEX = $(CP) -O ihex -BIN = $(CP) -O binary -S - -####################################### -# CFLAGS -####################################### -# cpu -CPU = -mcpu=cortex-m7 - -# fpu -FPU = -mfpu=fpv5-d16 - -# float-abi -FLOAT-ABI = -mfloat-abi=hard - -# mcu -MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI) - -# macros for gcc -# AS defines -AS_DEFS = - -# C defines -C_DEFS = \ --DUSE_HAL_DRIVER \ --DSTM32H750xx - - -# AS includes -AS_INCLUDES = \ --ICore/Inc - -# C includes -C_INCLUDES = \ --ICore/Inc \ --IDrivers/STM32H7xx_HAL_Driver/Inc \ --IDrivers/STM32H7xx_HAL_Driver/Inc/Legacy \ --IMiddlewares/Third_Party/FreeRTOS/Source/include \ --IMiddlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 \ --IMiddlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F \ --IDrivers/CMSIS/Device/ST/STM32H7xx/Include \ --IDrivers/CMSIS/Include - - -# compile gcc flags -ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections - -CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections - -ifeq ($(DEBUG), 1) -CFLAGS += -g -gdwarf-2 -endif - - -# Generate dependency information -CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" - - -####################################### -# LDFLAGS -####################################### -# link script -LDSCRIPT = STM32H750VBTx_FLASH.ld - -# libraries -LIBS = -lc -lm -lnosys -LIBDIR = -LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections - -# default action: build all -all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin - - -####################################### -# build the application -####################################### -# list of objects -OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o))) -vpath %.c $(sort $(dir $(C_SOURCES))) -# list of ASM program objects -OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o))) -vpath %.s $(sort $(dir $(ASM_SOURCES))) - -$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) - $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@ - -$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR) - $(AS) -c $(CFLAGS) $< -o $@ - -$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile - $(CC) $(OBJECTS) $(LDFLAGS) -o $@ - $(SZ) $@ - -$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR) - $(HEX) $< $@ - -$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR) - $(BIN) $< $@ - -$(BUILD_DIR): - mkdir $@ - -####################################### -# clean up -####################################### -clean: - -rm -fR $(BUILD_DIR) - -####################################### -# dependencies -####################################### --include $(wildcard $(BUILD_DIR)/*.d) - -# *** EOF *** \ No newline at end of file diff --git a/STM32H750VBTx_RAM.ld b/STM32H750VBTx_RAM.ld new file mode 100644 index 0000000..fab23d0 --- /dev/null +++ b/STM32H750VBTx_RAM.ld @@ -0,0 +1,193 @@ +/* +****************************************************************************** +** + +** File : LinkerScript.ld +** +** Author : Auto-generated by System Workbench for STM32 +** +** Abstract : Linker script for STM32H750VBTx series +** 128Kbytes FLASH and 1056Kbytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +**