diff --git a/board/pedal/Makefile b/board/pedal/Makefile index c922be54b500b6..d6318a3e6d80dd 100644 --- a/board/pedal/Makefile +++ b/board/pedal/Makefile @@ -19,11 +19,11 @@ CERT = ../../certs/debug CFLAGS += "-DALLOW_DEBUG" usbflash: obj/$(PROJ_NAME).bin - ../../tests/pedal/enter_canloader.py - sleep 0.5 + ../../tests/pedal/enter_canloader.py; sleep 0.5 PYTHONPATH=../../ python -c "from python import Panda; p = [x for x in [Panda(x) for x in Panda.list()] if x.bootstub]; assert(len(p)==1); p[0].flash('obj/$(PROJ_NAME).bin', reconnect=False)" recover: obj/bootstub.bin obj/$(PROJ_NAME).bin + ../../tests/pedal/enter_canloader.py --recover; sleep 0.5 $(DFU_UTIL) -d 0483:df11 -a 0 -s 0x08004000 -D obj/$(PROJ_NAME).bin $(DFU_UTIL) -d 0483:df11 -a 0 -s 0x08000000:leave -D obj/bootstub.bin diff --git a/board/pedal/main.c b/board/pedal/main.c index 4e543c3269ecd5..f8e8569a8812e6 100644 --- a/board/pedal/main.c +++ b/board/pedal/main.c @@ -122,9 +122,14 @@ void CAN1_RX0_IRQHandler() { uint32_t address = CAN->sFIFOMailBox[0].RIR>>21; if (address == CAN_GAS_INPUT) { // softloader entry - if (CAN->sFIFOMailBox[0].RDLR == 0xdeadface && CAN->sFIFOMailBox[0].RDHR == 0x0ab00b1e) { - enter_bootloader_mode = ENTER_SOFTLOADER_MAGIC; - NVIC_SystemReset(); + if (CAN->sFIFOMailBox[0].RDLR == 0xdeadface) { + if (CAN->sFIFOMailBox[0].RDHR == 0x0ab00b1e) { + enter_bootloader_mode = ENTER_SOFTLOADER_MAGIC; + NVIC_SystemReset(); + } else if (CAN->sFIFOMailBox[0].RDHR == 0x02b00b1e) { + enter_bootloader_mode = ENTER_BOOTLOADER_MAGIC; + NVIC_SystemReset(); + } } // normal packet diff --git a/tests/pedal/enter_canloader.py b/tests/pedal/enter_canloader.py index ed68eaeb6396de..1f25068470699a 100755 --- a/tests/pedal/enter_canloader.py +++ b/tests/pedal/enter_canloader.py @@ -1,8 +1,18 @@ #!/usr/bin/env python +import sys +import argparse from panda import Panda if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Flash pedal over can') + parser.add_argument('--recover', action='store_true') + args = parser.parse_args() + p = Panda() p.set_safety_mode(0x1337) - p.can_send(0x200, "\xce\xfa\xad\xde\x1e\x0b\xb0\x0a", 0) + + if args.recover: + p.can_send(0x200, "\xce\xfa\xad\xde\x1e\x0b\xb0\x02", 0) + else: + p.can_send(0x200, "\xce\xfa\xad\xde\x1e\x0b\xb0\x0a", 0)