From 8fe0d35e41df80d5f67b2b2b731247bf5fb5e9a5 Mon Sep 17 00:00:00 2001 From: Matt Alencar Date: Sun, 22 Feb 2026 23:04:06 +0000 Subject: [PATCH 1/2] Add support for OpenBLT Bootloader. --- scripts/buildcommands.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/buildcommands.py b/scripts/buildcommands.py index 1e2ac1041..ebfcd2d59 100644 --- a/scripts/buildcommands.py +++ b/scripts/buildcommands.py @@ -222,7 +222,7 @@ class Handle_arm_irq: # The ResetHandler was not defined - don't build VectorTable return "" max_irq = max(self.irqs.keys()) - table = [" DefaultHandler,\n"] * (max_irq + armcm_offset + 1) + table = [" DefaultHandler,\n"] * (max_irq + armcm_offset + 2) defs = [] for num, func in self.irqs.items(): if num < 1 - armcm_offset: @@ -230,6 +230,7 @@ class Handle_arm_irq: defs.append("extern void %s(void);\n" % (func,)) table[num + armcm_offset] = " %s,\n" % (func,) table[0] = " &_stack_end,\n" + table[-1] = " (void*)0x55AA11EE,\n" fmt = """ extern void DefaultHandler(void); extern uint32_t _stack_end; From ecfeb4548562218ea4d7b3a39e7fc827f9b5154e Mon Sep 17 00:00:00 2001 From: Matt Alencar Date: Wed, 25 Feb 2026 17:28:26 +0000 Subject: [PATCH 2/2] Automate the process of build .srec file, and added print-openblt-vector-table-cs-offset helper, that prints BOOT_FLASH_VECTOR_TABLE_CS_OFFSET value for OpenBLT bootloader. --- src/stm32/Makefile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/stm32/Makefile b/src/stm32/Makefile index 3c158d518..b382f7f21 100644 --- a/src/stm32/Makefile +++ b/src/stm32/Makefile @@ -92,11 +92,25 @@ src-$(CONFIG_HAVE_GPIO_SDIO) += stm32/sdio.c # Binary output file rules target-y += $(OUT)klipper.bin +target-y += $(OUT)klipper.srec $(OUT)klipper.bin: $(OUT)klipper.elf @echo " Creating bin file $@" $(Q)$(OBJCOPY) -O binary $< $@ +$(OUT)klipper.srec: $(OUT)klipper.bin + @echo " Creating srec file $@" + $(Q)$(OBJCOPY) -I binary -O srec --change-addresses "$(CONFIG_FLASH_APPLICATION_ADDRESS)" $< $@ + +# Print OpenBLT BOOT_FLASH_VECTOR_TABLE_CS_OFFSET +print-openblt-vector-table-cs-offset: + @addr=`$(OBJDUMP) -s -j .text $(OUT)klipper.elf | grep ee11aa55 | awk '{print $$1}'`; \ + if [ -z "$$addr" ]; then \ + echo "Pattern not found"; \ + exit 1; \ + fi; \ + printf "BOOT_FLASH_VECTOR_TABLE_CS_OFFSET: 0x%X\n" $$((0x$$addr - $(CONFIG_FLASH_APPLICATION_ADDRESS))) + # Flash rules lib/hidflash/hid-flash: @echo " Building hid-flash"