PROGRAMMER ?= uf2conv ifneq (,$(filter uf2conv adafruit-nrfutil,$(PROGRAMMER))) # The Adafruit nRF52 Bootloader currently only really supports # two MCUs. Set the according Family Flag and SoftDevice version if # not set already. ifneq (,$(filter nrf52833xxaa,$(CPU_MODEL))) UF2CONV_FLAGS = -f 0x621E937A ADANRFUTIL_FLAGS = --dev-type 0x0052 # The Adafruit nRF52 Bootloader has a static MBR at the first 4k # and a 38k UF2 Bootloader at the end, leaving 972k (nRF52840) or 460k # (nRF52833) for the application when not using the SoftDevice. # SoftDevice v6 uses an additional 114k and SoftDevice v7 uses 118k. # The option "DROP" overrides any SoftDevice, making a reflash of the # bootloader necessary if i.a. Arduino or CircuitPython # are to be used again. ifneq (,$(filter DROP,$(UF2_SOFTDEV))) ROM_OFFSET = 0x1000 ROM_LEN = 0x7f000 else ifneq (,$(filter SD611,$(UF2_SOFTDEV))) ROM_OFFSET = 0x26000 ROM_LEN = 0x5a000 ADANRFUTIL_FLAGS += --sd-req 0x00B6 else ifneq (,$(filter SD730,$(UF2_SOFTDEV))) ROM_OFFSET = 0x27000 ROM_LEN = 0x59000 ADANRFUTIL_FLAGS += --sd-req 0x0123 else $(error Unsupported SoftDevice Version $(UF2_SOFTDEV).) endif else ifneq (,$(filter nrf52840xxaa,$(CPU_MODEL))) UF2CONV_FLAGS = -f 0xADA52840 ADANRFUTIL_FLAGS = --dev-type 0x0052 ifneq (,$(filter DROP,$(UF2_SOFTDEV))) ROM_OFFSET = 0x1000 ROM_LEN = 0xf3000 else ifneq (,$(filter SD611,$(UF2_SOFTDEV))) ROM_OFFSET = 0x26000 ROM_LEN = 0xda000 ADANRFUTIL_FLAGS += --sd-req 0x00B6 else ifneq (,$(filter SD730,$(UF2_SOFTDEV))) ROM_OFFSET = 0x27000 ROM_LEN = 0xd9000 ADANRFUTIL_FLAGS += --sd-req 0x0123 else $(error Unsupported SoftDevice Version $(UF2_SOFTDEV).) endif else $(error Unsupported CPU $(CPU_MODEL) for Adafruit nRF52 Bootloader.) endif # Driver can take some time to get mounted PREFLASH_DELAY ?= 3 include $(RIOTMAKE)/tools/usb_board_reset.mk endif PROGRAMMERS_SUPPORTED += uf2conv PROGRAMMERS_SUPPORTED += adafruit-nrfutil # HACK: replicate dependency resolution in Makefile.dep, only works # if `USEMODULE` or `DEFAULT_MODULE` is set by the command line or in the # application Makefile. ifeq (,$(filter stdio_%,$(DISABLE_MODULE) $(USEMODULE))) RIOT_TERMINAL ?= jlink endif include $(RIOTBOARD)/common/nrf52/Makefile.include