Closed NBAPJ closed 4 years ago
Is python on your path? From a command prompt, run where python3
or from powershell, Get-Command python3
.
no its not in my path it says
$ where python3 INFO: Could not find files for the given pattern(s).
When I check my Python Version it returns the version
$ python --version Python 3.9.0
Ah, interesting that your python only has python.exe
and not
python3.exe
. You could make a symlink named python3.exe
that points at
python.exe
, or edit the makefile in the bootloader folder to change calls
to python3
to python
.
On Fri, Nov 6, 2020 at 7:40 PM NBAPJ notifications@github.com wrote:
When I check my Python Version it returns the version
$ python --version Python 3.9.0
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/cmdwtf/Odiin/issues/97#issuecomment-723360749, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAETEQ45UYTBQYPKEC7AHZ3SOSJQHANCNFSM4TNIETEA .
I added it to my path
where python C:\Program Files\Python39\python.exe
oh nevermind its not working for python3
Different Error
make[1]: *** [Makefile:401: _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539_s140_6.1.1.zip] Error 2
What are the lines around the error?
yea i really messed up after i edited makefile to look for python instead of python3 i get this error
$ make bootloader Building UF2 bootloader... C:/ProgramData/chocolatey/lib/make/tools/install/bin/make.exe -C bootloader BOARD=odiin all make[1]: Entering directory 'C:/Users/melenese/Desktop/OdiinNFC2/Odiin/bootloader' LD odiin_bootloader-0.3.2-158-g23e6539-dirty.out /usr/bin/sh: arm-none-eabi-gcc: command not found make[1]: [Makefile:374: _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty.out] Error 127 make[1]: Leaving directory 'C:/Users/melenese/Desktop/OdiinNFC2/Odiin/bootloader' make: [Makefile:483: bootloader] Error 2
I changed it back but i still get the same error
Here is the MakeFile:
SDK_PATH = lib/sdk/components SDK11_PATH = lib/sdk11/components TUSB_PATH = lib/tinyusb/src NRFX_PATH = lib/nrfx SD_PATH = lib/softdevice/$(SD_FILENAME)
SD_VERSION = 6.1.1 SD_FILENAME = $(SD_NAME)nrf52$(SD_VERSION) SD_HEX = $(SD_PATH)/$(SD_FILENAME)_softdevice.hex
MBR_HEX = lib/softdevice/mbr/hex/mbr_nrf52_2.4.1_mbr.hex
LD_FILE = linker/$(MCU_SUB_VARIANT).ld
GIT_VERSION != git describe --dirty --always --tags GIT_SUBMODULE_VERSIONS != git submodule status | cut -d" " -f3,4 | paste -s -d" " -
OUT_FILE = $(BOARD)_bootloader-$(GIT_VERSION)
MERGED_FILE = $(OUTFILE)$(SDNAME)$(SD_VERSION)
CROSS_COMPILE ?= arm-none-eabi- CC = $(CROSS_COMPILE)gcc AS = $(CROSS_COMPILE)as OBJCOPY = $(CROSS_COMPILE)objcopy SIZE = $(CROSS_COMPILE)size GDB = $(CROSS_COMPILE)gdb
NRFUTIL = adafruit-nrfutil NRFJPROG = nrfjprog FLASHER ?= nrfjprog PYOCD ?= pyocd
ifeq ($(FLASHER),nrfjprog) FLASH_CMD = $(NRFJPROG) --program $1 --sectoranduicrerase -f nrf52 --reset FLASH_NOUICR_CMD = $(NRFJPROG) --program $1 -f nrf52 --sectorerase --reset FLASH_ERASE_CMD = $(NRFJPROG) -f nrf52 --eraseall else ifeq ($(FLASHER),pyocd) FLASH_CMD = $(PYOCD) flash -t $(MCU_SUB_VARIANT) $1 FLASH_NOUICR_CMD = $(PYOCD) flash -t $(MCU_SUB_VARIANT) $1 FLASH_ERASE_CMD = $(PYOCD) erase -t $(MCU_SUB_VARIANT) --chip else $(error Unsupported flash utility: "$(FLASHER)") endif
ifneq ($(OS), Windows_NT) MK = mkdir -p else MK = mkdir endif
RM = rm -rf
BMP_PORT ?= $(shell ls -1 /dev/cu.usbmodem????????1 | head -1) GDB_BMP = $(GDB) -ex 'target extended-remote $(BMP_PORT)' -ex 'monitor swdp_scan' -ex 'attach 1'
BOARD_LIST = $(sort $(filter-out boards.h boards.c,$(notdir $(wildcard src/boards/*))))
ifeq ($(filter $(BOARD),$(BOARD_LIST)),) $(info You must provide a BOARD parameter with 'BOARD='. Supported boards are:) $(foreach b,$(BOARD_LIST),$(info - $(b))) $(error Invalid BOARD specified) endif
BUILD = _build/build-$(BOARD)
-include src/boards/$(BOARD)/board.mk
ifeq ($(MCU_SUB_VARIANT),nrf52) SD_NAME = s132 DFU_DEV_REV = 0xADAF CFLAGS += -DNRF52 -DNRF52832_XXAA -DS132 else ifeq ($(MCU_SUB_VARIANT),nrf52833) SD_NAME = s140 DFU_DEV_REV = 52840 CFLAGS += -DNRF52833_XXAA -DS140 else ifeq ($(MCU_SUB_VARIANT),nrf52840) SD_NAME = s140 DFU_DEV_REV = 52840 CFLAGS += -DNRF52840_XXAA -DS140 else $(error Sub Variant $(MCU_SUB_VARIANT) is unknown) endif
C_SRC += $(wildcard src/*.c)
C_SRC += $(wildcard src/boards/*.c)
C_SRC += $(wildcard src/boards/$(BOARD)/*.c)
C_SRC += $(NRFX_PATH)/drivers/src/nrfx_power.c C_SRC += $(NRFX_PATH)/drivers/src/nrfx_nvmc.c C_SRC += $(NRFXPATH)/mdk/system$(MCU_SUB_VARIANT).c
C_SRC += $(SDK11_PATH)/libraries/bootloader_dfu/bootloader.c C_SRC += $(SDK11_PATH)/libraries/bootloader_dfu/bootloader_settings.c C_SRC += $(SDK11_PATH)/libraries/bootloader_dfu/bootloader_util.c C_SRC += $(SDK11_PATH)/libraries/bootloader_dfu/dfu_transport_serial.c C_SRC += $(SDK11_PATH)/libraries/bootloader_dfu/dfu_transport_ble.c C_SRC += $(SDK11_PATH)/libraries/bootloader_dfu/dfu_single_bank.c C_SRC += $(SDK11_PATH)/ble/ble_services/ble_dfu/ble_dfu.c C_SRC += $(SDK11_PATH)/ble/ble_services/ble_dis/ble_dis.c C_SRC += $(SDK11_PATH)/drivers_nrf/pstorage/pstorage_raw.c
C_SRC += $(SDK_PATH)/libraries/timer/app_timer.c C_SRC += $(SDK_PATH)/libraries/scheduler/app_scheduler.c C_SRC += $(SDK_PATH)/libraries/util/app_error.c C_SRC += $(SDK_PATH)/libraries/util/app_util_platform.c C_SRC += $(SDK_PATH)/libraries/crc16/crc16.c C_SRC += $(SDK_PATH)/libraries/hci/hci_mem_pool.c C_SRC += $(SDK_PATH)/libraries/hci/hci_slip.c C_SRC += $(SDK_PATH)/libraries/hci/hci_transport.c C_SRC += $(SDK_PATH)/libraries/util/nrf_assert.c
ifeq ($(MCU_SUB_VARIANT),nrf52)
C_SRC += $(SDK_PATH)/libraries/uart/app_uart.c C_SRC += $(SDK_PATH)/drivers_nrf/uart/nrf_drv_uart.c C_SRC += $(SDK_PATH)/drivers_nrf/common/nrf_drv_common.c
IPATH += $(SDK11_PATH)/libraries/util IPATH += $(SDK_PATH)/drivers_nrf/common IPATH += $(SDK_PATH)/drivers_nrf/uart
else
C_SRC += $(wildcard src/usb/.c) C_SRC += $(wildcard src/usb/uf2/.c)
C_SRC += $(TUSB_PATH)/portable/nordic/nrf5x/dcd_nrf5x.c C_SRC += $(TUSB_PATH)/common/tusb_fifo.c C_SRC += $(TUSB_PATH)/device/usbd.c C_SRC += $(TUSB_PATH)/device/usbd_control.c C_SRC += $(TUSB_PATH)/class/cdc/cdc_device.c C_SRC += $(TUSB_PATH)/class/msc/msc_device.c C_SRC += $(TUSB_PATH)/tusb.c
endif
ASM_SRC = $(NRFX_PATH)/mdk/gccstartup$(MCU_SUB_VARIANT).S
IPATH += src IPATH += src/boards IPATH += src/boards/$(BOARD) IPATH += src/cmsis/include IPATH += src/usb IPATH += $(TUSB_PATH)
IPATH += $(NRFX_PATH) IPATH += $(NRFX_PATH)/mdk IPATH += $(NRFX_PATH)/hal IPATH += $(NRFX_PATH)/drivers/include IPATH += $(NRFX_PATH)/drivers/src
IPATH += $(SDK11_PATH)/libraries/bootloader_dfu/hci_transport IPATH += $(SDK11_PATH)/libraries/bootloader_dfu IPATH += $(SDK11_PATH)/drivers_nrf/pstorage IPATH += $(SDK11_PATH)/ble/common IPATH += $(SDK11_PATH)/ble/ble_services/ble_dfu IPATH += $(SDK11_PATH)/ble/ble_services/ble_dis
IPATH += $(SDK_PATH)/libraries/timer IPATH += $(SDK_PATH)/libraries/scheduler IPATH += $(SDK_PATH)/libraries/crc16 IPATH += $(SDK_PATH)/libraries/util IPATH += $(SDK_PATH)/libraries/hci/config IPATH += $(SDK_PATH)/libraries/uart IPATH += $(SDK_PATH)/libraries/hci IPATH += $(SDK_PATH)/drivers_nrf/delay
IPATH += $(SD_PATH)/$(SD_FILENAME)_API/include IPATH += $(SD_PATH)/$(SD_FILENAME)_API/include/nrf52
ifeq ($(DEBUG), 1) RTT_SRC = lib/SEGGER_RTT
CFLAGS += -ggdb -DCFG_DEBUG -DSEGGER_RTT_MODE_DEFAULT=SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL
IPATH += $(RTT_SRC)/RTT
C_SRC += $(RTT_SRC)/RTT/SEGGER_RTT.c endif
CFLAGS += \ -mthumb \ -mabi=aapcs \ -mcpu=cortex-m4 \ -mfloat-abi=hard \ -mfpu=fpv4-sp-d16 \ -Os \ -ffunction-sections \ -fdata-sections \ -fno-builtin \ -fshort-enums \ -fstack-usage \ -fno-strict-aliasing \ -Wall \ -Wextra \ -Werror \ -Wfatal-errors \ -Werror-implicit-function-declaration \ -Wfloat-equal \ -Wundef \ -Wshadow \ -Wwrite-strings \ -Wsign-compare \ -Wmissing-format-attribute \ -Wno-endif-labels \ -Wunreachable-code
CFLAGS += -Wno-unused-parameter -Wno-expansion-to-defined
CFLAGS += -Wno-cast-function-type
CFLAGS += -D__HEAP_SIZE=0 CFLAGS += -DCONFIG_GPIO_AS_PINRESET
ifneq ($(USE_NFCT),yes) CFLAGS += -DCONFIG_NFCT_PINS_AS_GPIOS endif
CFLAGS += -DSOFTDEVICE_PRESENT CFLAGS += -DDFU_APP_DATA_RESERVED=7*4096
CFLAGS += -DUF2_VERSION='"$(GIT_VERSION) $(GIT_SUBMODULE_VERSIONS)"' CFLAGS += -DBLEDIS_FW_VERSION='"$(GIT_VERSION) $(SD_NAME) $(SD_VERSION)"'
_VER = $(subst ., ,$(word 1, $(subst -, ,$(GIT_VERSION)))) CFLAGS += -DMK_BOOTLOADER_VERSION='($(word 1,$(_VER)) << 16) + ($(word 2,$(_VER)) << 8) + $(word 3,$(_VER))'
LDFLAGS += \ $(CFLAGS) \ -Wl,-L,linker -Wl,-T,$(LD_FILE) \ -Wl,-Map=$@.map -Wl,-cref -Wl,-gc-sections \ -specs=nosys.specs -specs=nano.specs
LIBS += -lm -lc
ASFLAGS += $(CFLAGS)
remduplicates = $(strip $(if $1,$(firstword $1) $(call remduplicates,$(filter-out $(firstword $1),$1))))
C_SOURCE_FILE_NAMES = $(notdir $(C_SRC)) C_PATHS = $(call remduplicates, $(dir $(C_SRC) ) ) C_OBJECTS = $(addprefix $(BUILD)/, $(C_SOURCE_FILE_NAMES:.c=.o) )
ASM_SOURCE_FILE_NAMES = $(notdir $(ASM_SRC)) ASM_PATHS = $(call remduplicates, $(dir $(ASM_SRC) )) ASM_OBJECTS = $(addprefix $(BUILD)/, $(ASM_SOURCE_FILE_NAMES:.S=.o) )
vpath %.c $(C_PATHS) vpath %.S $(ASM_PATHS)
OBJECTS = $(C_OBJECTS) $(ASM_OBJECTS)
INC_PATHS = $(addprefix -I,$(IPATH))
ifeq ("$(V)","1") $(info CFLAGS $(CFLAGS)) $(info ) $(info LDFLAGS $(LDFLAGS)) $(info ) $(info ASFLAGS $(ASFLAGS)) $(info ) endif
.PHONY: all clean flash dfu-flash sd gdbflash gdb
all: $(BUILD)/$(OUT_FILE).out $(BUILD)/$(OUT_FILE)-nosd.hex $(BUILD)/$(OUT_FILE)-nosd.uf2 $(BUILD)/$(MERGED_FILE).hex $(BUILD)/$(MERGED_FILE).zip
print-%: @echo $ = $($)
$(BUILD): @$(MK) "$@"
clean: @$(RM) $(BUILD)
$(BUILD)/%.o: %.c @echo CC $(notdir $<) @$(CC) $(CFLAGS) $(INC_PATHS) -c -o $@ $<
$(BUILD)/%.o: %.S @echo AS $(notdir $<) @$(CC) -x assembler-with-cpp $(ASFLAGS) $(INC_PATHS) -c -o $@ $<
$(BUILD)/$(OUT_FILE).out: $(BUILD) $(OBJECTS) @echo LD $(notdir $@) @$(CC) -o $@ $(LDFLAGS) $(OBJECTS) -Wl,--start-group $(LIBS) -Wl,--end-group @$(SIZE) $@
$(BUILD)/$(OUT_FILE).hex: $(BUILD)/$(OUT_FILE).out @echo Create $(notdir $@) @$(OBJCOPY) -O ihex $< $@
$(BUILD)/$(OUT_FILE)-nosd.hex: $(BUILD)/$(OUT_FILE).hex @echo Create $(notdir $@) @python tools/hexmerge.py --overlap=replace -o $@ $< $(MBR_HEX)
$(BUILD)/$(OUT_FILE)-nosd.uf2: $(BUILD)/$(OUT_FILE)-nosd.hex @echo Create $(notdir $@) @python lib/uf2/utils/uf2conv.py -f 0xd663823c -c -o $@ $^
$(BUILD)/$(MERGED_FILE).hex: $(BUILD)/$(OUT_FILE).hex @echo Create $(notdir $@) @python tools/hexmerge.py -o $@ $< $(SD_HEX)
$(BUILD)/$(MERGED_FILE).zip: $(BUILD)/$(OUT_FILE).hex @$(NRFUTIL) dfu genpkg --dev-type 0x0052 --dev-revision $(DFU_DEV_REV) --bootloader $< --softdevice $(SD_HEX) $@
check_defined = \ $(strip $(foreach 1,$1, \ $(call __check_defined,$1,$(strip $(value 2))))) __check_defined = \ $(if $(value $1),, \ $(error Undefined make flag: $1$(if $2, ($2))))
flash: $(BUILD)/$(OUT_FILE)-nosd.hex @echo Flashing: $(notdir $<) $(call FLASH_CMD,$<)
erase: @echo Erasing flash $(call FLASH_ERASE_CMD)
sd: @echo Flashing: $(SD_HEX) $(call FLASH_NOUICR_CMD,$(SD_HEX))
mbr: @echo Flashing: $(MBR_HEX) $(call FLASH_NOUICR_CMD,$(MBR_HEX))
dfu-flash: $(BUILD)/$(MERGED_FILE).zip @:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyACM0) $(NRFUTIL) --verbose dfu serial --package $< -p $(SERIAL) -b 115200 --singlebank --touch 1200
gdbflash: $(BUILD)/$(MERGED_FILE).hex @echo Flashing: $< @$(GDB_BMP) -nx --batch -ex 'load $<' -ex 'compare-sections' -ex 'kill'
gdb: $(BUILD)/$(OUT_FILE).out $(GDB_BMP) $<
Here is the Error
$ make bootloader Building UF2 bootloader... C:/ProgramData/chocolatey/lib/make/tools/install/bin/make.exe -C bootloader BOARD=odiin all make[1]: Entering directory 'C:/Users/melenese/Desktop/OdiinNFC2/Odiin/bootloader' Create odiin_bootloader-0.3.2-158-g23e6539-dirty-nosd.hex Create odiin_bootloader-0.3.2-158-g23e6539-dirty-nosd.uf2 Converting to uf2, output size: 72704, start address: 0x0 Wrote 72704 bytes to _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty-nosd.uf2 Create odiin_bootloader-0.3.2-158-g23e6539-dirty_s140_6.1.1.hex process_begin: CreateProcess(NULL, adafruit-nrfutil dfu genpkg --dev-type 0x0052 --dev-revision 52840 --bootloader _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty.hex --softdevice lib/softdevice/s140_nrf52_6.1.1/s140_nrf52_6.1.1_softdevice.hex _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty_s140_6.1.1.zip, ...) failed. make (e=2): The system cannot find the file specified. make[1]: [Makefile:401: _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty_s140_6.1.1.zip] Error 2 make[1]: Leaving directory 'C:/Users/melenese/Desktop/OdiinNFC2/Odiin/bootloader' make: [Makefile:483: bootloader] Error 2
It's not finding adafruit-nrfutil
, you need to pip install adafruit-nrfutil
Yea I already have it installed:
pip install adafruit-nrfutil Requirement already satisfied: adafruit-nrfutil in c:\users\melenese\appdata\roaming\python\python39\site-packages (0.5.3.post12) Requirement already satisfied: pyserial>=2.7 in c:\users\melenese\appdata\roaming\python\python39\site-packages (from adafruit-nrfutil) (3.4) Requirement already satisfied: click>=5.1 in c:\users\melenese\appdata\roaming\python\python39\site-packages (from adafruit-nrfutil) (7.1.2) Requirement already satisfied: ecdsa>=0.13 in c:\users\melenese\appdata\roaming\python\python39\site-packages (from adafruit-nrfutil) (0.16.0) Requirement already satisfied: six>=1.9.0 in c:\users\melenese\appdata\roaming\python\python39\site-packages (from ecdsa>=0.13->adafruit-nrfutil) (1.15.0)
Do you think that it installed in the wrong directory?
Is c:\users\melenese\appdata\roaming\python\python39\site-packages
in your path? (Try where adafruit-nrfutil
or Get-Command adafruit-nrfutil
) I definitely had to add my site-packages to my path manually, based on how I had installed python.
I finally got adafruit-nrfutil installed
$ where adafruit-nrfutil C:\Program Files\Python39\Scripts\adafruit-nrfutil.exe
I don't know why but when I piped installed adafruit-nrfutil it wasnt installing everything so I had to install it git clone command
I have put it in my PATH but its still giving me the same error I don't understand what file it cannot find
make bootloader Building UF2 bootloader... C:/ProgramData/chocolatey/lib/make/tools/install/bin/make.exe -C bootloader BOARD=odiin all make[1]: Entering directory 'C:/Users/melenese/Desktop/OdiinNFC2/Odiin/bootloader' LD odiin_bootloader-0.3.2-158-g23e6539-dirty.out text data bss dec hex filename 31304 1572 22594 55470 d8ae _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty.out Create odiin_bootloader-0.3.2-158-g23e6539-dirty.hex Create odiin_bootloader-0.3.2-158-g23e6539-dirty-nosd.hex process_begin: CreateProcess(NULL, python3 tools/hexmerge.py --overlap=replace -o _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty-nosd.hex _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty.hex lib/softdevice/mbr/hex/mbr_nrf52_2.4.1_mbr.hex, ...) failed. make (e=2): The system cannot find the file specified. make[1]: [Makefile:387: _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty-nosd.hex] Error 2 make[1]: Leaving directory 'C:/Users/melenese/Desktop/OdiinNFC2/Odiin/bootloader' make: [Makefile:483: bootloader] Error 2
Ah yeah, the Scripts
folder is definitely what I meant to have on your path, not site-packages
. Anyways, it seems to me like you're back to the earlier issue, where you didn't have a python3.exe on your path. Did you undo however you fixed that previously?
Yea i think I did, but the scripts folder is in my path, I gonna play around with it to see if I can fix it. But can you tell me what file it’s looking for?
It's looking for python3
, (which again, is probably just python
, like I was saying here)
You can see where it failed with:
process_begin: CreateProcess(NULL, python3 tools/hexmerge.py --overlap=replace -o _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty-nosd.hex _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-dirty.hex lib/softdevice/mbr/hex/mbr_nrf52_2.4.1_mbr.hex, ...) failed.
make (e=2): The system cannot find the file specified.
The second argument to create process is the command it's trying to run.
Discussion continued in #98
Hi I think I finally got my build environment set up correctly. I ran the make command and got the following files in the Odiin build folder: nrf52840_xxaa.bin, nrf52840_xxaa.hex, nrf52840_xxaa.in, nrf52840_xxaa.map, nrf52840_xxaa.out.
But when I run the make bootloader command I get the following error:
$ make bootloader Building UF2 bootloader... C:/ProgramData/chocolatey/lib/make/tools/install/bin/make.exe -C bootloader BOARD=odiin all make[1]: Entering directory 'C:/Users/melenese/Desktop/OdiinNFC2/Odiin/bootloader' CC dfu_ble_svc.c CC dfu_init.c CC flash_nrf5x.c CC main.c CC boards.c CC pinconfig.c CC nrfx_power.c CC nrfx_nvmc.c CC system_nrf52840.c CC bootloader.c CC bootloader_settings.c CC bootloader_util.c CC dfu_transport_serial.c CC dfu_transport_ble.c CC dfu_single_bank.c CC ble_dfu.c CC ble_dis.c CC pstorage_raw.c CC app_timer.c CC app_scheduler.c CC app_error.c CC app_util_platform.c CC crc16.c CC hci_mem_pool.c CC hci_slip.c CC hci_transport.c CC nrf_assert.c CC msc_uf2.c CC usb.c CC usb_desc.c CC ghostfat.c CC dcd_nrf5x.c CC tusb_fifo.c CC usbd.c CC usbd_control.c CC cdc_device.c CC msc_device.c CC tusb.c AS gcc_startup_nrf52840.S LD odiin_bootloader-0.3.2-158-g23e6539.out text data bss dec hex filename 31300 1572 22594 55466 d8aa _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539.out Create odiin_bootloader-0.3.2-158-g23e6539.hex Create odiin_bootloader-0.3.2-158-g23e6539-nosd.hex process_begin: CreateProcess(NULL, python3 tools/hexmerge.py --overlap=replace -o _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-nosd.hex _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539.hex lib/softdevice/mbr/hex/mbr_nrf52_2.4.1_mbr.hex, ...) failed. make (e=2): The system cannot find the file specified. make[1]: [Makefile:387: _build/build-odiin/odiin_bootloader-0.3.2-158-g23e6539-nosd.hex] Error 2 make[1]: Leaving directory 'C:/Users/melenese/Desktop/OdiinNFC2/Odiin/bootloader' make: [Makefile:483: bootloader] Error 2