summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Wegener <sven.wegener@stealer.net>2015-12-31 21:48:38 +0100
committerSven Wegener <sven.wegener@stealer.net>2018-07-20 21:13:30 +0200
commitd084650eb5bc6d19ac877f5b60b21c17fd92a3a9 (patch)
tree00ccbc78849e34213236811a7ba1527efa41c461
parent9f957641a796454b7f4be023dc46287b7cf694fd (diff)
stmhal: Split out firmware0.bin and firmware1.bin rules
Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
-rw-r--r--ports/stm32/Makefile21
1 files changed, 17 insertions, 4 deletions
diff --git a/ports/stm32/Makefile b/ports/stm32/Makefile
index 27e3e61fb..ffa5b9b7d 100644
--- a/ports/stm32/Makefile
+++ b/ports/stm32/Makefile
@@ -494,12 +494,25 @@ deploy-openocd: $(BUILD)/firmware.dfu
$(ECHO) "Writing $(BUILD)/firmware{0,1}.bin to the board via ST-LINK using OpenOCD"
$(Q)$(OPENOCD) -f $(OPENOCD_CONFIG) -c "stm_flash $(BUILD)/firmware0.bin $(TEXT0_ADDR) $(BUILD)/firmware1.bin $(TEXT1_ADDR)"
-$(BUILD)/firmware.dfu: $(BUILD)/firmware.elf
+# The addresses and extracted sections for the .bin files must match the ones
+# used in the $(LD_FILE) linker file.
+
+firmware0_ADDR = $(TEXT0_ADDR)
+firmware0_SECTIONS = .isr_vector
+FIRMWARE_FILES += $(BUILD)/firmware0.bin
+
+firmware1_ADDR = $(TEXT1_ADDR)
+firmware1_SECTIONS = .text .data
+FIRMWARE_FILES += $(BUILD)/firmware1.bin
+
+.INTERMEDIATE: $(FIRMWARE_FILES)
+$(FIRMWARE_FILES): $(BUILD)/firmware.elf
$(ECHO) "GEN $@"
- $(Q)$(OBJCOPY) -O binary -j .isr_vector $^ $(BUILD)/firmware0.bin
- $(Q)$(OBJCOPY) -O binary -j .text -j .data $^ $(BUILD)/firmware1.bin
- $(Q)$(PYTHON) $(DFU) -b $(TEXT0_ADDR):$(BUILD)/firmware0.bin -b $(TEXT1_ADDR):$(BUILD)/firmware1.bin $@
+ $(Q)$(OBJCOPY) -O binary $(foreach section,$($(basename $(notdir $(@)))_SECTIONS),-j $(section)) $^ $@
+$(BUILD)/firmware.dfu: $(FIRMWARE_FILES)
+ $(ECHO) "GEN $@"
+ $(Q)$(PYTHON) $(DFU) $(foreach binfile,$(^),-b $($(basename $(notdir $(binfile)))_ADDR):$(binfile)) $@
endif
$(BUILD)/firmware.hex: $(BUILD)/firmware.elf