Skip to content

Commit 19bfa81

Browse files
authored
[cortex-m] Communicate the flash_offset to the dfu-util tool
1 parent f01fd0a commit 19bfa81

File tree

7 files changed

+18
-2
lines changed

7 files changed

+18
-2
lines changed

tools/build_script_generator/cmake/module.lb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ def post_build(env):
118118
if subs["core"].startswith("cortex-m"):
119119
# get memory information
120120
subs["memories"] = env.query("::memories")
121+
subs["flash_offset"] = env.get(":platform:cortex-m:linkerscript.flash_offset", 0)
122+
subs["flash_address"] = hex(0x08000000 + subs["flash_offset"])
121123
else:
122124
subs["memories"] = []
123125
# Set these substitutions for all templates

tools/build_script_generator/make/module.lb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ def post_build(env):
5555
subs["uf2mem"] = ["{:#x}:{:#x}:{}".format(m["start"], m["start"] + m["size"],
5656
"CONTENTS" if "flash" in m["name"] else "NO_CONTENTS")
5757
for m in subs["memories"]]
58+
subs["flash_offset"] = env.get(":platform:cortex-m:linkerscript.flash_offset", 0)
59+
subs["flash_address"] = hex(0x08000000 + subs["flash_offset"])
5860
else:
5961
subs["memories"] = []
6062
# Add SCons specific data

tools/build_script_generator/make/resources/Makefile.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,10 @@ program-jlink: build
117117
@$(PYTHON3) -m modm_tools.jlink -device $(MODM_JLINK_DEVICE) $(ELF_FILE)
118118

119119
delay?=5
120+
CONFIG_FLASH_ADDRESS?=0x08000000
120121
.PHONY: program-dfu
121122
program-dfu: bin
122-
@dfu-util -v -E$(delay) -R -i 0 -a 0 -s 0x08000000:leave -D $(BIN_FILE)
123+
@dfu-util -v -E$(delay) -R -i 0 -a 0 -s $(CONFIG_FLASH_ADDRESS):leave -D $(BIN_FILE)
123124
%#
124125
%% if platform in ["sam"]
125126
.PHONY: program-bossac

tools/build_script_generator/make/resources/config.mk.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ MODM_GDB_COMMANDS = -x $(MODM_PATH)/gdbinit -ex "dir $(GCC_BASE)" -ex "modm_setu
4747
MODM_GDB_COMMANDS_OPENOCD = -x $(MODM_PATH)/gdbinit_openocd
4848
MODM_GDB_COMMANDS_JLINK = -x $(MODM_PATH)/gdbinit_jlink
4949
MODM_GDB_COMMANDS_BMP = -x $(MODM_PATH)/gdbinit_bmp
50+
CONFIG_FLASH_OFFSET := {{ flash_offset }}
51+
CONFIG_FLASH_ADDRESS := {{ flash_address }}
5052
%% if platform == "sam"
5153
%% if bossac_offset
5254
MODM_BOSSAC_OFFSET := {{ bossac_offset }}

tools/build_script_generator/scons/module.lb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,8 @@ def post_build(env):
163163
if subs["core"].startswith("cortex-m"):
164164
# get memory information
165165
subs["memories"] = env.query("::memories")
166+
subs["flash_offset"] = env.get(":platform:cortex-m:linkerscript.flash_offset", 0)
167+
subs["flash_address"] = hex(0x08000000 + subs["flash_offset"])
166168
else:
167169
subs["memories"] = []
168170
# Add SCons specific data

tools/build_script_generator/scons/resources/SConscript.in

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,12 @@ env.Append(MODM_GDBINIT_OPENOCD = "$BASEPATH/modm/gdbinit_openocd")
135135
env.Append(MODM_GDBINIT_JLINK = "$BASEPATH/modm/gdbinit_jlink")
136136
env.Append(MODM_GDBINIT_BMP = "$BASEPATH/modm/gdbinit_bmp")
137137
env.Append(MODM_GDB_COMMANDS = ["dir $GCC_PATH", "modm_setup_tui"])
138+
139+
%% if core.startswith("cortex-m")
140+
env["CONFIG_FLASH_OFFSET"] = {{ flash_offset }}
141+
env["CONFIG_FLASH_ADDRESS"] = {{ flash_address }}
142+
%% endif
143+
138144
%% if platform == "sam"
139145
%% if bossac_offset
140146
env.Append(MODM_BOSSAC_OFFSET = {{ bossac_offset }})

tools/build_script_generator/scons/site_tools/dfu.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
# -----------------------------------------------------------------------------
2828
def program_dfu(env, source):
2929
delay = ARGUMENTS.get("delay", "5")
30-
actionString = 'dfu-util -v -E{} -R -i 0 -a 0 -s 0x08000000:leave -D $SOURCE'.format(delay)
30+
flash_address = env.get("CONFIG_FLASH_ADDRESS", 0x08000000)
31+
actionString = 'dfu-util -v -E{} -R -i 0 -a 0 -s {}:leave -D $SOURCE'.format(delay, flash_address)
3132
return env.AlwaysBuildAction(actionString, "$PROGRAM_DFU_COMSTR", source)
3233

3334
# -----------------------------------------------------------------------------

0 commit comments

Comments
 (0)