diff --git a/tools/build_script_generator/cmake/module.lb b/tools/build_script_generator/cmake/module.lb index 175e216f9e..130b606286 100644 --- a/tools/build_script_generator/cmake/module.lb +++ b/tools/build_script_generator/cmake/module.lb @@ -118,6 +118,8 @@ def post_build(env): if subs["core"].startswith("cortex-m"): # get memory information subs["memories"] = env.query("::memories") + subs["flash_offset"] = env.get(":platform:cortex-m:linkerscript.flash_offset", 0) + subs["flash_address"] = hex(0x08000000 + subs["flash_offset"]) else: subs["memories"] = [] # Set these substitutions for all templates diff --git a/tools/build_script_generator/make/module.lb b/tools/build_script_generator/make/module.lb index 981e0d3e81..4eed0e1bdb 100644 --- a/tools/build_script_generator/make/module.lb +++ b/tools/build_script_generator/make/module.lb @@ -55,6 +55,8 @@ def post_build(env): subs["uf2mem"] = ["{:#x}:{:#x}:{}".format(m["start"], m["start"] + m["size"], "CONTENTS" if "flash" in m["name"] else "NO_CONTENTS") for m in subs["memories"]] + subs["flash_offset"] = env.get(":platform:cortex-m:linkerscript.flash_offset", 0) + subs["flash_address"] = hex(0x08000000 + subs["flash_offset"]) else: subs["memories"] = [] # Add SCons specific data diff --git a/tools/build_script_generator/make/resources/Makefile.in b/tools/build_script_generator/make/resources/Makefile.in index 2fbd535214..a4d63b8eca 100644 --- a/tools/build_script_generator/make/resources/Makefile.in +++ b/tools/build_script_generator/make/resources/Makefile.in @@ -117,9 +117,10 @@ program-jlink: build @$(PYTHON3) -m modm_tools.jlink -device $(MODM_JLINK_DEVICE) $(ELF_FILE) delay?=5 +CONFIG_FLASH_ADDRESS?=0x08000000 .PHONY: program-dfu program-dfu: bin - @dfu-util -v -E$(delay) -R -i 0 -a 0 -s 0x08000000:leave -D $(BIN_FILE) + @dfu-util -v -E$(delay) -R -i 0 -a 0 -s $(CONFIG_FLASH_ADDRESS):leave -D $(BIN_FILE) %# %% if platform in ["sam"] .PHONY: program-bossac diff --git a/tools/build_script_generator/make/resources/config.mk.in b/tools/build_script_generator/make/resources/config.mk.in index 393be524df..3a0a802619 100644 --- a/tools/build_script_generator/make/resources/config.mk.in +++ b/tools/build_script_generator/make/resources/config.mk.in @@ -47,6 +47,8 @@ MODM_GDB_COMMANDS = -x $(MODM_PATH)/gdbinit -ex "dir $(GCC_BASE)" -ex "modm_setu MODM_GDB_COMMANDS_OPENOCD = -x $(MODM_PATH)/gdbinit_openocd MODM_GDB_COMMANDS_JLINK = -x $(MODM_PATH)/gdbinit_jlink MODM_GDB_COMMANDS_BMP = -x $(MODM_PATH)/gdbinit_bmp +CONFIG_FLASH_OFFSET := {{ flash_offset }} +CONFIG_FLASH_ADDRESS := {{ flash_address }} %% if platform == "sam" %% if bossac_offset MODM_BOSSAC_OFFSET := {{ bossac_offset }} diff --git a/tools/build_script_generator/scons/module.lb b/tools/build_script_generator/scons/module.lb index 801898b525..b37e51a2dc 100644 --- a/tools/build_script_generator/scons/module.lb +++ b/tools/build_script_generator/scons/module.lb @@ -163,6 +163,8 @@ def post_build(env): if subs["core"].startswith("cortex-m"): # get memory information subs["memories"] = env.query("::memories") + subs["flash_offset"] = env.get(":platform:cortex-m:linkerscript.flash_offset", 0) + subs["flash_address"] = hex(0x08000000 + subs["flash_offset"]) else: subs["memories"] = [] # Add SCons specific data diff --git a/tools/build_script_generator/scons/resources/SConscript.in b/tools/build_script_generator/scons/resources/SConscript.in index 74e4f04e0a..3a23eff4c5 100644 --- a/tools/build_script_generator/scons/resources/SConscript.in +++ b/tools/build_script_generator/scons/resources/SConscript.in @@ -135,6 +135,12 @@ env.Append(MODM_GDBINIT_OPENOCD = "$BASEPATH/modm/gdbinit_openocd") env.Append(MODM_GDBINIT_JLINK = "$BASEPATH/modm/gdbinit_jlink") env.Append(MODM_GDBINIT_BMP = "$BASEPATH/modm/gdbinit_bmp") env.Append(MODM_GDB_COMMANDS = ["dir $GCC_PATH", "modm_setup_tui"]) + +%% if core.startswith("cortex-m") +env["CONFIG_FLASH_OFFSET"] = {{ flash_offset }} +env["CONFIG_FLASH_ADDRESS"] = {{ flash_address }} +%% endif + %% if platform == "sam" %% if bossac_offset env.Append(MODM_BOSSAC_OFFSET = {{ bossac_offset }}) diff --git a/tools/build_script_generator/scons/site_tools/dfu.py b/tools/build_script_generator/scons/site_tools/dfu.py index fa851a6b19..5d9b316486 100644 --- a/tools/build_script_generator/scons/site_tools/dfu.py +++ b/tools/build_script_generator/scons/site_tools/dfu.py @@ -27,7 +27,8 @@ # ----------------------------------------------------------------------------- def program_dfu(env, source): delay = ARGUMENTS.get("delay", "5") - actionString = 'dfu-util -v -E{} -R -i 0 -a 0 -s 0x08000000:leave -D $SOURCE'.format(delay) + flash_address = env.get("CONFIG_FLASH_ADDRESS", 0x08000000) + actionString = 'dfu-util -v -E{} -R -i 0 -a 0 -s {}:leave -D $SOURCE'.format(delay, flash_address) return env.AlwaysBuildAction(actionString, "$PROGRAM_DFU_COMSTR", source) # -----------------------------------------------------------------------------