@@ -44,8 +44,19 @@ OBJCOPY = $(CROSS_COMPILE)objcopy
44
44
SIZE = $(CROSS_COMPILE ) size
45
45
GDB = $(CROSS_COMPILE ) gdb
46
46
47
+ # Flasher utility options
47
48
NRFUTIL = adafruit-nrfutil
48
49
NRFJPROG = nrfjprog
50
+ FLASHER ?=
51
+
52
+ # default to nrf
53
+ ifeq ($(FLASHER ) ,)
54
+ FLASHER = nrf
55
+ else ifeq ($(FLASHER),pyocd)
56
+ PYOCD ?= pyocd
57
+ else
58
+ $(error Unsupported flash utility : "$(FLASHER ) ")
59
+ endif
49
60
50
61
# Set make directory command, Windows tries to create a directory named "-p" if that flag is there.
51
62
ifneq ($(OS ) , Windows_NT)
@@ -387,32 +398,66 @@ __check_defined = \
387
398
$(if $(value $1),, \
388
399
$(error Undefined make flag : $1$(if $2, ($2) )))
389
400
390
- # Flash the compiled
391
- flash : $(BUILD ) /$(OUT_FILE ) -nosd.hex
401
+
402
+ # ------------------- Flash with NRFUTIL -------------------
403
+ ifeq ($(FLASHER ) ,nrf)
404
+
405
+ # Flash the compiled
406
+ flash : $(BUILD ) /$(OUT_FILE ) -nosd.hex
392
407
@echo Flashing: $(notdir $< )
393
408
$(NRFJPROG ) --program $< --sectoranduicrerase -f nrf52 --reset
394
409
395
- # dfu using CDC interface
396
- dfu-flash : $(BUILD ) /$(MERGED_FILE ) .zip
410
+ # dfu using CDC interface
411
+ dfu-flash : $(BUILD ) /$(MERGED_FILE ) .zip
397
412
@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0)
398
413
$(NRFUTIL ) --verbose dfu serial --package $< -p $(SERIAL ) -b 115200 --singlebank --touch 1200
399
414
400
- erase :
415
+ erase :
401
416
@echo Erasing flash
402
417
$(NRFJPROG ) -f nrf52 --eraseall
403
418
404
- # flash SD only
405
- sd :
419
+ # flash SD only
420
+ sd :
406
421
@echo Flashing: $(SD_HEX )
407
422
$(NRFJPROG ) --program $(SD_HEX ) -f nrf52 --sectorerase --reset
408
423
409
- # flash MBR only
410
- mbr :
424
+ # flash MBR only
425
+ mbr :
411
426
@echo Flashing: $(MBR_HEX )
412
427
$(NRFJPROG ) --program $(MBR_HEX ) -f nrf52 --sectorerase --reset
413
428
429
+ # ------------------- Flash with PYOCD -------------------
430
+ else ifeq ($(FLASHER),pyocd)
431
+
432
+ # Flash the compiled
433
+ flash : $(BUILD ) /$(OUT_FILE ) -nosd.hex
434
+ @echo Flashing: $(notdir $< )
435
+ $(PYOCD ) flash -t $(MCU_SUB_VARIANT ) $<
436
+
437
+ # dfu unsupported with pyocd
438
+ dfu-flash : $(BUILD ) /$(MERGED_FILE ) .zip
439
+ $(error dfu-flash is not implemented with pyocd as the FLASHER)
440
+
441
+ erase :
442
+ @echo Erasing flash
443
+ $(PYOCD ) erase -t $(MCU_SUB_VARIANT ) --chip
444
+
445
+ # flash SD only
446
+ sd :
447
+ @echo Flashing: $(SD_HEX )
448
+ $(PYOCD ) flash -t $(MCU_SUB_VARIANT ) $(SD_HEX )
449
+
450
+ # flash MBR only
451
+ mbr :
452
+ @echo Flashing: $(MBR_HEX )
453
+ $(PYOCD ) flash -t $(MCU_SUB_VARIANT ) $(MBR_HEX )
454
+
455
+ endif
456
+
457
+ # ------------------- Debugging -------------------
458
+
414
459
gdbflash : $(BUILD ) /$(MERGED_FILE ) .hex
415
- @echo Flashing: $<
460
+ @echo Flashing : $<
416
461
@$(GDB_BMP ) -nx --batch -ex ' load $<' -ex ' compare-sections' -ex ' kill'
417
462
418
463
gdb : $(BUILD ) /$(OUT_FILE ) .out
0 commit comments