init
This commit is contained in:
commit
75fbf8809d
489 files changed
+398278
No files matched your search
@@ -0,0 +1,295 @@
|
||||
# Helper macros to convert spaces into question marks and back again
|
||||
e :=
|
||||
sp := $(e) $(e)
|
||||
qs = $(subst ?,$(sp),$1)
|
||||
sq = $(subst $(sp),?,$1)
|
||||
|
||||
# Get name of this Makefile (avoid getting word 0 and a starting space)
|
||||
makefile_name := $(wordlist 1,1000,$(MAKEFILE_LIST))
|
||||
|
||||
# Get path of this Makefile
|
||||
makefile_path := $(call qs,$(dir $(call sq,$(abspath $(call sq,$(makefile_name))))))
|
||||
|
||||
# Get path where the Application is
|
||||
application_path := $(call qs,$(abspath $(call sq,$(makefile_path)..)))
|
||||
|
||||
# Change makefile_name to a relative path
|
||||
makefile_name := $(subst $(call sq,$(application_path))/,,$(call sq,$(abspath $(call sq,$(makefile_name)))))
|
||||
|
||||
# Get relative path to makefile from application_path
|
||||
makefile_path_relative := $(subst $(call sq,$(application_path))/,,$(call sq,$(abspath $(call sq,$(makefile_path)))))
|
||||
|
||||
# Get path to Drivers
|
||||
Drivers_path := Drivers
|
||||
|
||||
# Get path to ExtMem_Manager
|
||||
ExtMem_Manager_path := Middlewares/ST/STM32_ExtMem_Manager
|
||||
|
||||
# Get identification of this system
|
||||
ifeq ($(OS),Windows_NT)
|
||||
UNAME := MINGW32_NT-6.2
|
||||
else
|
||||
UNAME := $(shell uname -s)
|
||||
endif
|
||||
|
||||
board_name := STM32H7S78-DK
|
||||
platform := cortex_m7
|
||||
|
||||
.PHONY: all clean assets flash intflash
|
||||
|
||||
all: $(filter clean,$(MAKECMDGOALS))
|
||||
all clean assets:
|
||||
@cd "$(application_path)" && $(MAKE) -r -f $(makefile_name) -s $(MFLAGS) _$@_
|
||||
|
||||
flash intflash: all
|
||||
@cd "$(application_path)" && $(MAKE) -r -f $(makefile_name) -s $(MFLAGS) _$@_
|
||||
|
||||
build_root_path := Boot/TouchGFX/build
|
||||
object_output_path := $(build_root_path)/$(board_name)
|
||||
binary_output_path := $(build_root_path)/bin
|
||||
|
||||
ifeq ($(UNAME), Linux)
|
||||
else
|
||||
stldr := MX66UW1G45G_STM32H7S78-DK.stldr
|
||||
include $(application_path)/gcc/include/cube_programmer.mk
|
||||
endif
|
||||
|
||||
target_executable := target.elf
|
||||
target_hex := target.hex
|
||||
|
||||
assembler := arm-none-eabi-gcc
|
||||
c_compiler := arm-none-eabi-gcc
|
||||
cpp_compiler := arm-none-eabi-g++
|
||||
linker := arm-none-eabi-g++
|
||||
objcopy := arm-none-eabi-objcopy
|
||||
archiver := arm-none-eabi-ar
|
||||
strip := arm-none-eabi-strip
|
||||
|
||||
assembler_options += \
|
||||
-MMD \
|
||||
-MP \
|
||||
-Wall \
|
||||
-c \
|
||||
-fno-exceptions \
|
||||
-g \
|
||||
-mthumb \
|
||||
-x assembler-with-cpp
|
||||
|
||||
c_compiler_options += \
|
||||
--specs=nano.specs \
|
||||
-MMD \
|
||||
-MP \
|
||||
-Os \
|
||||
-Wall \
|
||||
-fdata-sections \
|
||||
-fdata-sections \
|
||||
-ffunction-sections \
|
||||
-fno-exceptions \
|
||||
-fstack-usage \
|
||||
-g \
|
||||
-mthumb \
|
||||
-std=gnu11
|
||||
|
||||
cpp_compiler_options += \
|
||||
--specs=nano.specs \
|
||||
-MMD \
|
||||
-MP \
|
||||
-Os \
|
||||
-fdata-sections \
|
||||
-ffunction-sections \
|
||||
-fno-exceptions \
|
||||
-fno-rtti \
|
||||
-g \
|
||||
-mthumb \
|
||||
-std=gnu++14
|
||||
|
||||
linker_options += \
|
||||
--specs=nosys.specs \
|
||||
-Os \
|
||||
-Wl,--gc-sections -static \
|
||||
-Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group \
|
||||
-fno-exceptions \
|
||||
-fno-rtti \
|
||||
-g \
|
||||
-mthumb
|
||||
|
||||
# Additional toolchain configuration for Cortex-M4 targets.
|
||||
float_options := -mfpu=fpv5-sp-d16 -mfloat-abi=hard
|
||||
|
||||
assembler_options += $(float_options) -mcpu=cortex-m7 -DCORE_CM7
|
||||
c_compiler_options += $(float_options) -mcpu=cortex-m7 -DCORE_CM7
|
||||
cpp_compiler_options += $(float_options) -mcpu=cortex-m7 -DCORE_CM7
|
||||
linker_options += $(float_options) -mcpu=cortex-m7
|
||||
|
||||
c_compiler_options += -DST -DSTM32H7S7xx -DUSE_HAL_DRIVER -DUSE_STM32H7S78_DK -DUSE_PWR_LDO_SUPPLY__N -DUSE_FLOATING_POINT
|
||||
cpp_compiler_options += -DST -DSTM32H7S7xx -DUSE_HAL_DRIVER -DUSE_STM32H7S78_DK -DUSE_PWR_LDO_SUPPLY__N -DUSE_FLOATING_POINT
|
||||
|
||||
# Drivers/STM32H7RSxx_HAL_Driver
|
||||
source_files += \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_cortex.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_dma.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_dma_ex.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_exti.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_flash.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_flash_ex.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_gpio.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_pwr.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_pwr_ex.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_rcc.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_rcc_ex.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_tim.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_tim_ex.c \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal_xspi.c
|
||||
|
||||
source_files += \
|
||||
Boot/Core/Src/main.c \
|
||||
Boot/Core/Src/stm32h7rsxx_it.c \
|
||||
Boot/Core/Src/stm32h7rsxx_hal_msp.c \
|
||||
Boot/Core/Src/system_stm32h7rsxx.c \
|
||||
Boot/Core/Src/extmem_manager.c \
|
||||
$(ExtMem_Manager_path)/stm32_extmem.c \
|
||||
$(ExtMem_Manager_path)/boot/stm32_boot_xip.c \
|
||||
$(ExtMem_Manager_path)/nor_sfdp/stm32_sfdp_data.c \
|
||||
$(ExtMem_Manager_path)/nor_sfdp/stm32_sfdp_driver.c \
|
||||
$(ExtMem_Manager_path)/psram/stm32_psram_driver.c \
|
||||
$(ExtMem_Manager_path)/sal/stm32_sal_sd.c \
|
||||
$(ExtMem_Manager_path)/sal/stm32_sal_xspi.c \
|
||||
$(ExtMem_Manager_path)/sdcard/stm32_sdcard_driver.c \
|
||||
$(ExtMem_Manager_path)/user/stm32_user_driver.c
|
||||
|
||||
# Drivers
|
||||
board_include_paths := \
|
||||
$(Drivers_path)/CMSIS/Include \
|
||||
$(Drivers_path)/CMSIS/Device/ST/STM32H7RSxx/Include \
|
||||
$(Drivers_path)/STM32H7RSxx_HAL_Driver/Inc \
|
||||
$(Drivers_path)/CMSIS/RTOS2/Include \
|
||||
Boot/Core/Inc \
|
||||
$(ExtMem_Manager_path) \
|
||||
$(ExtMem_Manager_path)/boot \
|
||||
$(ExtMem_Manager_path)/nor_sfdp \
|
||||
$(ExtMem_Manager_path)/psram \
|
||||
$(ExtMem_Manager_path)/sal \
|
||||
$(ExtMem_Manager_path)/sdcard \
|
||||
$(ExtMem_Manager_path)/user
|
||||
|
||||
asm_source_files := \
|
||||
gcc/startup_stm32h7s7l8hxh_boot.s
|
||||
|
||||
include_paths += platform/os $(board_include_paths) $(os_include_paths)
|
||||
|
||||
c_source_files := $(makefile_path_relative)/sysmem.c $(makefile_path_relative)/syscalls.c $(call find, $(source_paths),*.c) $(os_source_files) $(board_c_files)
|
||||
source_files += $(board_cpp_files)
|
||||
object_files := $(source_files) $(c_source_files)
|
||||
|
||||
# start converting paths
|
||||
object_files := $(object_files:%.cpp=$(object_output_path)/%.o)
|
||||
object_files := $(object_files:%.c=$(object_output_path)/%.o)
|
||||
object_files := $(object_files:$(Drivers_path)/%.c=$(object_output_path)/Drivers/%.o)
|
||||
|
||||
# remove templates files
|
||||
# object_files := $(filter-out %template.o,$(object_files))
|
||||
|
||||
dependency_files := $(object_files:%.o=%.d)
|
||||
|
||||
object_asm_files := $(asm_source_files:%.s=$(object_output_path)/%.o)
|
||||
object_asm_files := $(patsubst $(object_output_path)/%,$(object_output_path)/%,$(object_asm_files))
|
||||
|
||||
.PHONY: _all_ _clean_ _assets_ _flash_ _intflash_ generate_assets build_executable
|
||||
|
||||
# Force linking each time
|
||||
.PHONY: $(binary_output_path)/$(target_executable)
|
||||
|
||||
_all_: generate_assets
|
||||
|
||||
# if ExtFlashSection or FontFlashSection is detected inside the executable, enable external flash
|
||||
flash_section_count := 0
|
||||
elf_filename := "$(application_path)/$(binary_output_path)/$(target_executable)"
|
||||
ifeq ($(shell test -e $(elf_filename) && echo -n has_elf_file),has_elf_file)
|
||||
flash_section_count := $(shell readelf -S $(elf_filename) | grep FlashSection | wc -l)
|
||||
endif
|
||||
|
||||
ifeq ($(shell test $(flash_section_count) -gt 0; echo $$?),0)
|
||||
_flash_: _extflash_
|
||||
else
|
||||
_flash_: _intflash_
|
||||
endif
|
||||
|
||||
include $(application_path)/gcc/include/flash_sections_int_ext.mk
|
||||
|
||||
generate_assets: _assets_
|
||||
@$(MAKE) -f $(makefile_name) -r -s $(MFLAGS) build_executable
|
||||
|
||||
build_executable: $(binary_output_path)/$(target_executable)
|
||||
|
||||
$(binary_output_path)/$(target_executable): $(object_files) $(object_asm_files)
|
||||
@echo Linking $(@)
|
||||
@mkdir -p $(@D)
|
||||
@mkdir -p $(object_output_path)
|
||||
@$(file >$(build_root_path)/objects.tmp) $(foreach F,$(object_files),$(file >>$(build_root_path)/objects.tmp,$F))
|
||||
@$(linker) \
|
||||
$(linker_options) -T $(makefile_path_relative)/../Boot/stm32h7s7xx_flash.ld -Wl,-Map=$(@D)/application.map \
|
||||
$(patsubst %,-L%,$(library_include_paths)) \
|
||||
@$(build_root_path)/objects.tmp $(object_asm_files) -o $@ \
|
||||
-Wl,--start-group -Wl,--end-group
|
||||
@rm -f $(build_root_path)/objects.tmp
|
||||
@echo "Producing additional output formats..."
|
||||
@echo " target.hex - Combined internal+external hex"
|
||||
@$(objcopy) -O ihex $@ $(@D)/target.hex
|
||||
@echo " intflash.elf - Internal flash, elf debug"
|
||||
@$(objcopy) $@ $(@D)/intflash.elf 2>/dev/null
|
||||
@echo " intflash.hex - Internal flash, hex"
|
||||
@$(objcopy) -O ihex $@ $(@D)/intflash.hex
|
||||
# Re-enable the lines below if your workflow requires extflash.bin files
|
||||
# @echo " extflash.bin - External flash, binary"
|
||||
# @$(objcopy) -O binary $@ $(@D)/extflash.bin
|
||||
|
||||
$(object_output_path)/touchgfx/%.o: $(touchgfx_path)/%.cpp
|
||||
@echo Compiling $<
|
||||
@mkdir -p $(@D)
|
||||
@$(cpp_compiler) \
|
||||
-MMD -MP $(cpp_compiler_options) $(user_cflags) \
|
||||
$(patsubst %,-I%,$(include_paths)) \
|
||||
-c $< -o $@
|
||||
|
||||
$(object_output_path)/%.o: %.cpp
|
||||
@echo Compiling $<
|
||||
@mkdir -p $(@D)
|
||||
@$(cpp_compiler) \
|
||||
-MMD -MP $(cpp_compiler_options) $(user_cflags) \
|
||||
$(patsubst %,-I%,$(include_paths)) \
|
||||
-c $< -o $@
|
||||
|
||||
$(object_output_path)/touchgfx/%.o: $(touchgfx_path)/%.c
|
||||
@echo Compiling $<
|
||||
@mkdir -p $(@D)
|
||||
@$(c_compiler) \
|
||||
-MMD -MP $(c_compiler_options) $(user_cflags) \
|
||||
$(patsubst %,-I%,$(include_paths)) \
|
||||
-c $< -o $@
|
||||
|
||||
$(object_output_path)/%.o: %.c
|
||||
@echo Compiling $<
|
||||
@mkdir -p $(@D)
|
||||
@$(c_compiler) \
|
||||
-MMD -MP $(c_compiler_options) $(user_cflags) \
|
||||
$(patsubst %,-I%,$(include_paths)) \
|
||||
-c $< -o $@
|
||||
|
||||
$(object_output_path)/%.o: %.s
|
||||
@echo Compiling ASM $<
|
||||
@mkdir -p $(@D)
|
||||
@$(assembler) \
|
||||
$(assembler_options) \
|
||||
$(patsubst %,-I %,$(os_include_paths)) \
|
||||
-c $< -o $@
|
||||
|
||||
ifeq ($(MAKECMDGOALS),build_executable)
|
||||
$(firstword $(dependency_files)):
|
||||
@rm -rf $(object_output_path)
|
||||
-include $(dependency_files)
|
||||
endif
|
||||
|
||||
_clean_:
|
||||
@echo Cleaning: $(board_name)
|
||||
@rm -rf $(build_root_path)
|
||||
Reference in new issue
Block a user