scripts: support CanBoot on RP2040 in flash_usb.py

Signed-off-by: Chris Lee <clee@mg8.org>
This commit is contained in:
Chris Lee 2022-12-19 12:30:12 -07:00 committed by KevinOConnor
parent f078a27905
commit aac613bf44
2 changed files with 10 additions and 5 deletions

View File

@ -193,6 +193,7 @@ def call_picoboot(bus, addr, binfile, sudo):
# Flash via Klipper modified "picoboot" # Flash via Klipper modified "picoboot"
def flash_picoboot(device, binfile, sudo): def flash_picoboot(device, binfile, sudo):
ttyname, serbypath = translate_serial_to_tty(device)
buspath, devpath = translate_serial_to_usb_path(device) buspath, devpath = translate_serial_to_usb_path(device)
# We need one level up to get access to busnum/devnum files # We need one level up to get access to busnum/devnum files
usbdir = os.path.dirname(devpath) usbdir = os.path.dirname(devpath)
@ -202,6 +203,9 @@ def flash_picoboot(device, binfile, sudo):
bus = f.read().strip() bus = f.read().strip()
with open(usbdir + "/devnum") as f: with open(usbdir + "/devnum") as f:
addr = f.read().strip() addr = f.read().strip()
if detect_canboot(devpath):
call_flashcan(serbypath, binfile)
else:
call_picoboot(bus, addr, binfile, sudo) call_picoboot(bus, addr, binfile, sudo)

View File

@ -45,7 +45,7 @@ $(OUT)klipper.uf2: $(OUT)klipper.elf $(OUT)lib/rp2040/elf2uf2/elf2uf2
@echo " Creating uf2 file $@" @echo " Creating uf2 file $@"
$(Q)$(OUT)lib/rp2040/elf2uf2/elf2uf2 $< $@ $(Q)$(OUT)lib/rp2040/elf2uf2/elf2uf2 $< $@
target-$(CONFIG_RP2040_HAVE_STAGE2) += $(OUT)klipper.uf2 rptarget-$(CONFIG_RP2040_HAVE_STAGE2) := $(OUT)klipper.uf2
rplink-$(CONFIG_RP2040_HAVE_STAGE2) := $(OUT)src/rp2040/rp2040_link.ld rplink-$(CONFIG_RP2040_HAVE_STAGE2) := $(OUT)src/rp2040/rp2040_link.ld
stage2-$(CONFIG_RP2040_HAVE_STAGE2) := $(OUT)stage2.o stage2-$(CONFIG_RP2040_HAVE_STAGE2) := $(OUT)stage2.o
@ -54,10 +54,11 @@ $(OUT)klipper.bin: $(OUT)klipper.elf
@echo " Creating bin file $@" @echo " Creating bin file $@"
$(Q)$(OBJCOPY) -O binary $< $@ $(Q)$(OBJCOPY) -O binary $< $@
target-$(CONFIG_RP2040_HAVE_BOOTLOADER) += $(OUT)klipper.bin rptarget-$(CONFIG_RP2040_HAVE_BOOTLOADER) := $(OUT)klipper.bin
rplink-$(CONFIG_RP2040_HAVE_BOOTLOADER) := $(OUT)src/generic/armcm_link.ld rplink-$(CONFIG_RP2040_HAVE_BOOTLOADER) := $(OUT)src/generic/armcm_link.ld
# Set klipper.elf linker rules # Set klipper.elf linker rules
target-y += $(rptarget-y)
CFLAGS_klipper.elf += --specs=nano.specs --specs=nosys.specs -T $(rplink-y) CFLAGS_klipper.elf += --specs=nano.specs --specs=nosys.specs -T $(rplink-y)
OBJS_klipper.elf += $(stage2-y) OBJS_klipper.elf += $(stage2-y)
$(OUT)klipper.elf: $(stage2-y) $(rplink-y) $(OUT)klipper.elf: $(stage2-y) $(rplink-y)
@ -67,6 +68,6 @@ lib/rp2040_flash/rp2040_flash:
@echo " Building rp2040_flash" @echo " Building rp2040_flash"
$(Q)make -C lib/rp2040_flash rp2040_flash $(Q)make -C lib/rp2040_flash rp2040_flash
flash: $(OUT)klipper.uf2 lib/rp2040_flash/rp2040_flash flash: $(rptarget-y) lib/rp2040_flash/rp2040_flash
@echo " Flashing $< to $(FLASH_DEVICE)" @echo " Flashing $< to $(FLASH_DEVICE)"
$(Q)$(PYTHON) ./scripts/flash_usb.py -t $(CONFIG_MCU) -d "$(FLASH_DEVICE)" $(if $(NOSUDO),--no-sudo) $(OUT)klipper.uf2 $(Q)$(PYTHON) ./scripts/flash_usb.py -t $(CONFIG_MCU) -d "$(FLASH_DEVICE)" $(if $(NOSUDO),--no-sudo) $(rptarget-y)