aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-11-30 22:22:42 -0500
committerKevin O'Connor <kevin@koconnor.net>2018-11-30 22:22:42 -0500
commite505ab0df1cb4c31b171dde285fa4361d1e89df2 (patch)
tree1e1c4915e09baba6fe1d69f7af75d38ca8c4f513
parentf2179da8adfaff9862f12982713b27150c9bd9d1 (diff)
downloadkutter-e505ab0df1cb4c31b171dde285fa4361d1e89df2.tar.gz
kutter-e505ab0df1cb4c31b171dde285fa4361d1e89df2.tar.xz
kutter-e505ab0df1cb4c31b171dde285fa4361d1e89df2.zip
samd21: Add support for flashing an application via the bossac tool
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rwxr-xr-xdocs/Bootloaders.md8
-rw-r--r--src/samd21/Makefile12
2 files changed, 15 insertions, 5 deletions
diff --git a/docs/Bootloaders.md b/docs/Bootloaders.md
index 079ad164..77f3ad3b 100755
--- a/docs/Bootloaders.md
+++ b/docs/Bootloaders.md
@@ -195,8 +195,12 @@ SAMD21. One comes standard with the "Arduino Zero" and the other comes
standard with the "Arduino M0".
The Arduino Zero uses an 8KiB bootloader (the application must be
-compiled with a start address of 8KiB). This document does not cover
-the flashing mechanism for this bootloader.
+compiled with a start address of 8KiB). One can enter the bootloader
+by double clicking the reset button. To flash an application use
+something like:
+```
+bossac -U -p "$(FLASH_DEVICE)" --offset=0x2000 -w out/klipper.bin -v -b -R
+```
The Arduino M0 uses a 16KiB bootloader (the application must be
compiled with a start address of 16KiB). To flash an application,
diff --git a/src/samd21/Makefile b/src/samd21/Makefile
index 34de8e48..abe21013 100644
--- a/src/samd21/Makefile
+++ b/src/samd21/Makefile
@@ -42,6 +42,12 @@ $(OUT)klipper.elf.hex: $(OUT)klipper.elf
@echo " Creating hex file $@"
$(Q)$(OBJCOPY) -j .text -j .relocate -O ihex $< $@
-flash: $(OUT)klipper.bin
- @echo ""
- @echo " The SAMD21 build does not currently support 'make flash'"
+# Flash rules
+lib/bossac/bin/bossac:
+ @echo " Building bossac"
+ $(Q)make -C lib/bossac bin/bossac
+
+flash: $(OUT)klipper.bin lib/bossac/bin/bossac
+ @echo " Flashing $^ to $(FLASH_DEVICE) via bossac"
+ $(Q)if [ -z $(FLASH_DEVICE) ]; then echo "Please specify FLASH_DEVICE"; exit 1; fi
+ $(Q)lib/bossac/bin/bossac -U -p "$(FLASH_DEVICE)" --offset=0x2000 -w $(OUT)klipper.bin -v -b -R