diff --git a/boards/bluepill/Makefile.include b/boards/bluepill/Makefile.include
index 353208a59bd8d1cae02f263d5b3774468a94cb6a..cd5c8686aff4ce9218aac113e6648852ffc38970 100644
--- a/boards/bluepill/Makefile.include
+++ b/boards/bluepill/Makefile.include
@@ -20,8 +20,7 @@ ifeq ($(PROGRAMMER),dfu-util)
   export DEBUGGER = # no debugger
   export RESET = # dfu-util has no support for resetting the device
 
-  export OFLAGS = -O binary
-  HEXFILE = $(ELFFILE:.elf=.bin)
+  HEXFILE = $(BINFILE)
   export FFLAGS = -d 1d50:6017 -s 0x08002000:leave -D "$(HEXFILE)"
 else
 
diff --git a/boards/calliope-mini/Makefile.include b/boards/calliope-mini/Makefile.include
index 36097f266eea50ea6e90e83b10aa537e915f5dd9..7fe765e3a7129b3efa27613c32ae9a683cc22ffd 100644
--- a/boards/calliope-mini/Makefile.include
+++ b/boards/calliope-mini/Makefile.include
@@ -12,7 +12,6 @@ include $(RIOTMAKE)/tools/serial.inc.mk
 # we support flashing through plain fscopy or using JLink
 PROGRAMMER ?= fscopy
 ifeq (fscopy,$(PROGRAMMER))
-  export OFLAGS = -O ihex
   export FFLAGS =
   export DEBUGGER_FLAGS =
 
diff --git a/boards/cc2538dk/Makefile.include b/boards/cc2538dk/Makefile.include
index 8fc9b5e519b7998085485d130fdfd5e8f25c9a0c..0d9f5751854042d2ab1b8556df5611e9e7a8f8a7 100644
--- a/boards/cc2538dk/Makefile.include
+++ b/boards/cc2538dk/Makefile.include
@@ -30,8 +30,8 @@ else ifeq ($(PROGRAMMER),jlink)
   export FFLAGS  = $(BINDIR) $(HEXFILE)
 endif
 
-export OFLAGS    = -O binary --gap-fill 0xff
-export HEXFILE = $(ELFFILE:.elf=.bin)
+OFLAGS = --gap-fill 0xff
+HEXFILE = $(BINFILE)
 export DEBUGGER_FLAGS = $(BINDIR) $(ELFFILE)
 export RESET_FLAGS = $(BINDIR)
 
diff --git a/boards/chronos/Makefile.include b/boards/chronos/Makefile.include
index 4eeb0fcdc602a6f6e8b3256aaa17f067f3ba84b2..12321d761c7fc146430a4462e131312fcf5de2fb 100644
--- a/boards/chronos/Makefile.include
+++ b/boards/chronos/Makefile.include
@@ -3,7 +3,6 @@ export CPU = cc430
 export CPU_MODEL = cc430f6137
 
 # flasher configuration
-export OFLAGS = -O ihex
 export FLASHER = mspdebug
 export FFLAGS = rf2500 "prog $(HEXFILE)"
 
diff --git a/boards/common/arduino-atmega/Makefile.include b/boards/common/arduino-atmega/Makefile.include
index 89773798a30842d10b05c57c9a153c6bdd59508d..9c90f6b8c1c5510ea92a55f3149bb6fdd436ead3 100644
--- a/boards/common/arduino-atmega/Makefile.include
+++ b/boards/common/arduino-atmega/Makefile.include
@@ -17,5 +17,5 @@ export DEBUGGER = $(DIST_PATH)/debug.sh $(DEBUGSERVER_FLAGS) $(DIST_PATH) $(DEBU
 
 export PROGRAMMER_FLAGS = -P $(PORT) -b $(PROGRAMMER_SPEED)
 
-export OFLAGS += -j .text -j .data -O ihex
+OFLAGS += -j .text -j .data
 export FFLAGS += -c $(PROGRAMMER) $(PROGRAMMER_FLAGS) -F -D -U flash:w:$(HEXFILE)
diff --git a/boards/common/msb-430/Makefile.include b/boards/common/msb-430/Makefile.include
index e7ce2c6d836359897407bb1d508ebbe70bbdf11e..3125ba07156dde89ca3ac1024abab859dc231b86 100644
--- a/boards/common/msb-430/Makefile.include
+++ b/boards/common/msb-430/Makefile.include
@@ -9,7 +9,6 @@ PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*)))
 include $(RIOTMAKE)/tools/serial.inc.mk
 
 # setup flash tool
-export OFLAGS = -O ihex
 export PROGRAMMER ?= olimex
 export MSPDEBUGFLAGS += -j $(PROGRAMMER)
 ifeq ($(strip $(PROGRAMMER)),uif)
diff --git a/boards/common/msba2/Makefile.include b/boards/common/msba2/Makefile.include
index 6618753cb59ac0c3191ed25578618b7e818f6ff0..5ba3b3d01cf3a541777712afb7d7229d2298ef75 100644
--- a/boards/common/msba2/Makefile.include
+++ b/boards/common/msba2/Makefile.include
@@ -29,8 +29,6 @@ export FFLAGS = $(PORT) $(HEXFILE)
 INCLUDES += -I$(RIOTBOARD)/common/msba2/include
 INCLUDES += -I$(RIOTBOARD)/common/msba2/drivers/include
 
-export OFLAGS = -O ihex
-
 export UNDEF += $(BINDIR)/cpu/startup.o
 
 USEMODULE += boards_common_msba2-drivers
diff --git a/boards/common/remote/Makefile.include b/boards/common/remote/Makefile.include
index 362cd778ed05668685ede2ea31ac017de965cc9a..fd79d46aba221a6012a87f40c265a6db77ba5e32 100644
--- a/boards/common/remote/Makefile.include
+++ b/boards/common/remote/Makefile.include
@@ -22,8 +22,8 @@ else ifeq ($(PROGRAMMER),jlink)
   export RESET = $(RIOTBOARD)/$(BOARD)/dist/reset.sh
 endif
 
-export OFLAGS    = -O binary --gap-fill 0xff
-export HEXFILE = $(ELFFILE:.elf=.bin)
+OFLAGS = --gap-fill 0xff
+HEXFILE = $(BINFILE)
 export DEBUGGER_FLAGS = $(BINDIR) $(ELFFILE)
 export RESET_FLAGS = $(BINDIR)
 export OBJDUMPFLAGS += --disassemble --source --disassembler-options=force-thumb
diff --git a/boards/common/wsn430/Makefile.include b/boards/common/wsn430/Makefile.include
index 8bf601afa24a350a8bec28e8dbbc0e79f3598ee6..b41b4306f4a6c697cdc7c65e526f42a85c7d3bce 100644
--- a/boards/common/wsn430/Makefile.include
+++ b/boards/common/wsn430/Makefile.include
@@ -13,6 +13,5 @@ PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*)))
 include $(RIOTMAKE)/tools/serial.inc.mk
 
 # configure the flash tool
-export OFLAGS = -O ihex
 export FLASHER = mspdebug
 export FFLAGS = -d $(PORT) -j uif "prog $(HEXFILE)"
diff --git a/boards/f4vi1/Makefile.include b/boards/f4vi1/Makefile.include
index 3ccea4ee55f57bb552206bed14c31aae1ee99a7c..bea758463221b1322c676797ce9bf9ba682503ef 100644
--- a/boards/f4vi1/Makefile.include
+++ b/boards/f4vi1/Makefile.include
@@ -15,7 +15,6 @@ export DEBUGGER = $(RIOTBOARD)/$(BOARD)/dist/debug.sh
 export DEBUGSERVER = st-util
 
 # define st-flash parameters
-export OFLAGS = -O binary
-HEXFILE = $(ELFFILE:.elf=.bin)
+HEXFILE = $(BINFILE)
 export FFLAGS = write $(HEXFILE) 0x8000000
 export DEBUGGER_FLAGS = $(RIOTBOARD)/$(BOARD)/dist/gdb.conf $(ELFFILE)
diff --git a/boards/mbed_lpc1768/Makefile.include b/boards/mbed_lpc1768/Makefile.include
index 58f1721a7bd18dabd9ed3a5b8cf37fde9e434fbc..3adfc67b2192cf118d65e5429a7dd5c0b6377ac9 100644
--- a/boards/mbed_lpc1768/Makefile.include
+++ b/boards/mbed_lpc1768/Makefile.include
@@ -5,8 +5,7 @@ export FLASHER = $(RIOTBOARD)/$(BOARD)/dist/flash.sh
 export DEBUGGER =
 export DEBUGSERVER =
 
-export OFLAGS = -O binary
-export HEXFILE = $(ELFFILE:.elf=.bin)
+HEXFILE = $(BINFILE)
 export FFLAGS =
 export DEBUGGER_FLAGS =
 
diff --git a/boards/mega-xplained/Makefile.include b/boards/mega-xplained/Makefile.include
index b113c4563e58c17ee29c95c175e1d0f3a993803c..63c2961f0f1cc685b6fb7619fa8ff785864e9b3d 100644
--- a/boards/mega-xplained/Makefile.include
+++ b/boards/mega-xplained/Makefile.include
@@ -20,5 +20,5 @@ export PROGRAMMER ?= buspirate
 
 export PROGRAMMER_FLAGS = -P /dev/ttyUSB0
 
-export OFLAGS += -j .text -j .data -O ihex
+OFLAGS += -j .text -j .data
 export FFLAGS += -p m1284p -c $(PROGRAMMER) $(PROGRAMMER_FLAGS) -F -U flash:w:$(HEXFILE)
diff --git a/boards/microbit/Makefile.include b/boards/microbit/Makefile.include
index d1ccffe7ec2b32514f78df5c3cc88152d7a7a3bd..6349546dbdc45eb6d3fad57e828b1d7fe31aaf00 100644
--- a/boards/microbit/Makefile.include
+++ b/boards/microbit/Makefile.include
@@ -12,7 +12,6 @@ include $(RIOTMAKE)/tools/serial.inc.mk
 # we support flashing through plain fscopy or using JLink
 PROGRAMMER ?= fscopy
 ifeq (fscopy,$(PROGRAMMER))
-  export OFLAGS = -O ihex
   export FFLAGS =
   export DEBUGGER_FLAGS =
 
diff --git a/boards/mips-malta/Makefile.include b/boards/mips-malta/Makefile.include
index 7db8d235215ac4ef32a9fdf9a0b763da0484b5fd..5ecd0137a90107d84fe623e642133d89798a8d98 100644
--- a/boards/mips-malta/Makefile.include
+++ b/boards/mips-malta/Makefile.include
@@ -4,5 +4,4 @@ export INCLUDES += -I$(RIOTBOARD)/$(BOARD)/include/
 export USE_DSP = 1
 export USE_UHI_SYSCALLS = 1
 
-OFLAGS = -Obinary
-HEXFILE = $(ELFFILE:.elf=.bin)
+HEXFILE = $(BINFILE)
diff --git a/boards/native/Makefile.include b/boards/native/Makefile.include
index 3d739ac2d087387b85eaf7cc03d400a0a6e646e3..b2f60d5f850b7c601210450b01171c299b96b1ee 100644
--- a/boards/native/Makefile.include
+++ b/boards/native/Makefile.include
@@ -25,12 +25,10 @@ ifneq ($(shell uname -s),Darwin)
 else
   ifeq (0,$(shell which gobjcopy 2>&1 > /dev/null ; echo $$?))
     export OBJCOPY ?= gobjcopy
-    export OFLAGS ?= -O ihex
   else
     # If gobjcopy is not available, just do nothing. The hexfile
     # is not used for native anyways.
     export OBJCOPY ?= true
-    export OFLAGS =
   endif
 endif
 
diff --git a/boards/nrf6310/Makefile.include b/boards/nrf6310/Makefile.include
index 8b49b6f77a0b66c123b7df7e96c356ee02fb95b7..7cb45a324fc73c797a4aa338a7f7351d6a03c3a3 100644
--- a/boards/nrf6310/Makefile.include
+++ b/boards/nrf6310/Makefile.include
@@ -12,8 +12,7 @@ export DEBUGGER = $(RIOTBOARD)/$(BOARD)/dist/debug.sh
 export DEBUGSERVER = JLinkGDBServer -device nrf51822 -if SWD
 export RESET = $(RIOTBOARD)/$(BOARD)/dist/reset.sh
 
-export OFLAGS = -O binary
-export HEXFILE = $(ELFFILE:.elf=.bin)
+HEXFILE = $(BINFILE)
 export FFLAGS = $(BINDIR) $(HEXFILE)
 export DEBUGGER_FLAGS = $(BINDIR) $(ELFFILE)
 export RESET_FLAGS = $(BINDIR)
diff --git a/boards/nz32-sc151/Makefile.include b/boards/nz32-sc151/Makefile.include
index ed4ef10e87056f3eb62d730a861fd357033951ce..8f16c6c4d132987b0c2c138fced118557b6c18ef 100644
--- a/boards/nz32-sc151/Makefile.include
+++ b/boards/nz32-sc151/Makefile.include
@@ -13,8 +13,7 @@ export FLASHER = dfu-util
 export DEBUGGER = # dfu-util has no debugger
 export RESET = # dfu-util has no support for resetting the device
 
-export OFLAGS = -O binary
-HEXFILE = $(ELFFILE:.elf=.bin)
+HEXFILE = $(BINFILE)
 export FFLAGS = -d $(ID) -a 0 -s 0x08000000:leave -D "$(HEXFILE)"
 export TERMFLAGS = -p $(PORT)
 
diff --git a/boards/opencm904/Makefile.include b/boards/opencm904/Makefile.include
index c84c2fc89e2c5e571a6e59edb5fd1149e07e7778..7c329c7fbaee2691a0ad4458f470df82b1f01687 100644
--- a/boards/opencm904/Makefile.include
+++ b/boards/opencm904/Makefile.include
@@ -7,8 +7,7 @@ export FLASHER = $(RIOTBOARD)/$(BOARD)/dist/robotis-loader.py
 export DEBUGGER =
 export DEBUGSERVER =
 
-export OFLAGS = -O binary
-export HEXFILE = $(ELFFILE:.elf=.bin)
+HEXFILE = $(BINFILE)
 export FFLAGS =
 export DEBUGGER_FLAGS =
 
diff --git a/boards/openmote-cc2538/Makefile.include b/boards/openmote-cc2538/Makefile.include
index ffada2313143526d773257eb48dccd8a61dd44c5..160c38624cc190dd73c5eab013051503cf1e5da1 100644
--- a/boards/openmote-cc2538/Makefile.include
+++ b/boards/openmote-cc2538/Makefile.include
@@ -17,8 +17,7 @@ ifeq ($(PROGRAMMER),jlink)
   export TUI := 1
   include $(RIOTMAKE)/tools/jlink.inc.mk
 else
-  export OFLAGS = -O binary
-  export HEXFILE = $(ELFFILE:.elf=.bin)
+  HEXFILE = $(BINFILE)
   export FLASHER = $(RIOTBASE)/dist/tools/cc2538-bsl/cc2538-bsl.py
   export FFLAGS  = -p "$(PORT)" -e -w -v -b 460800 $(HEXFILE)
 endif
diff --git a/boards/spark-core/Makefile.include b/boards/spark-core/Makefile.include
index c264a630af9b8d7a2346d301e11ca1ed05b46a38..5e1da18bbb825a72b56b1f8d7a0935ebc683252b 100644
--- a/boards/spark-core/Makefile.include
+++ b/boards/spark-core/Makefile.include
@@ -11,8 +11,7 @@ export FLASHER = dfu-util
 export DEBUGGER = # spark core has no debugger
 export RESET = # dfu-util has no support for resetting the device
 
-export OFLAGS = -O binary
-HEXFILE = $(ELFFILE:.elf=.bin)
+HEXFILE = $(BINFILE)
 export FFLAGS = -d 1d50:607f -a 0 -s 0x08005000:leave -D "$(HEXFILE)"
 
 export INCLUDES += -I$(RIOTCPU)/$(CPU)/include/ -I$(RIOTBOARD)/$(BOARD)/include/
diff --git a/boards/teensy31/Makefile.include b/boards/teensy31/Makefile.include
index 19634004ae0e85322671974716797b347fc62318..f0a58921e0e26478b832528e15418eb8c4065aa6 100644
--- a/boards/teensy31/Makefile.include
+++ b/boards/teensy31/Makefile.include
@@ -6,8 +6,6 @@ CPU_MODEL = mk20dx256vlh7
 TEENSY_LOADER = $(RIOTBASE)/dist/tools/teensy-loader-cli/teensy_loader
 FLASHER = $(TEENSY_LOADER)
 
-OFLAGS = -O ihex
-
 FFLAGS ?= --mcu=mk20dx256 $(HEXFILE)
 
 ifeq ($(TEENSY_LOADER),$(FLASHER))
diff --git a/boards/telosb/Makefile.include b/boards/telosb/Makefile.include
index 7d062b427460cbf07a7673ef80aab9bcb5505732..62632f85e2b8129df5761aa9ef26cbbb71f065db 100644
--- a/boards/telosb/Makefile.include
+++ b/boards/telosb/Makefile.include
@@ -10,6 +10,5 @@ export BAUD ?= 9600
 include $(RIOTMAKE)/tools/serial.inc.mk
 
 # flash tool configuration
-export OFLAGS = -O ihex
 export FLASHER = $(RIOTBASE)/dist/tools/goodfet/goodfet.bsl
 export FFLAGS = --telosb -c $(PORT) -r -e -I -p $(HEXFILE)
diff --git a/boards/waspmote-pro/Makefile.include b/boards/waspmote-pro/Makefile.include
index f68403fa0fd64ac3187a2ae5ce796698bb63bb38..2991c77adcc2f53ae2fe9e399d53c6a424a4e3e3 100644
--- a/boards/waspmote-pro/Makefile.include
+++ b/boards/waspmote-pro/Makefile.include
@@ -33,5 +33,5 @@ ifeq ($(PROGRAMMER), stk500v1)
   export PROGRAMMER_FLAGS = -P $(PORT) -b 115200
 endif
 
-export OFLAGS += -j .text -j .data -O ihex
+OFLAGS += -j .text -j .data
 export FFLAGS += -p m1281 -c $(PROGRAMMER) $(PROGRAMMER_FLAGS) -F -U flash:w:$(HEXFILE)
diff --git a/boards/z1/Makefile.include b/boards/z1/Makefile.include
index a215e48f14ffe4bf4f887d15512b9122933f2566..2e5e35b212da13f2c8892f4619bc28fdab9bd819 100644
--- a/boards/z1/Makefile.include
+++ b/boards/z1/Makefile.include
@@ -9,6 +9,5 @@ PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*)))
 include $(RIOTMAKE)/tools/serial.inc.mk
 
 # setup flash tool
-export OFLAGS = -O ihex
 export FLASHER = $(RIOTBASE)/dist/tools/goodfet/goodfet.bsl
 export FFLAGS = --z1 -I -c $(PORT) -r -e -p $(HEXFILE)
diff --git a/cpu/mips_pic32mx/Makefile.include b/cpu/mips_pic32mx/Makefile.include
index d71b7bf020e8e712e1cd649eec9818dd811d0d09..c8367774ade54647690b5c33ccb57bab95292676 100644
--- a/cpu/mips_pic32mx/Makefile.include
+++ b/cpu/mips_pic32mx/Makefile.include
@@ -11,18 +11,18 @@ export LINKFLAGS += -Tpic32mx512_12_128_uhi.ld
 
 # the pickit programmer (MPLAB-IPE) wants physical addresses in the hex file!!
 export OBJCOPY = objcopy #use system objcopy as toolchain one is broken.
-export OFLAGS += -O ihex \
-				--change-section-lma .bootflash-0xA0000000 \
-				--change-section-lma .exception_vector-0x80000000 \
-				--change-section-lma .text-0x80000000 \
-				--change-section-lma .init-0x80000000 \
-				--change-section-lma .fini-0x80000000 \
-				--change-section-lma .eh_frame-0x80000000 \
-				--change-section-lma .gcc_except_table-0x80000000 \
-				--change-section-lma .jcr-0x80000000 \
-				--change-section-lma .ctors-0x80000000 \
-				--change-section-lma .dtors-0x80000000 \
-				--change-section-lma .rodata-0x80000000 \
-				--change-section-lma .data-0x80000000 \
-				--change-section-lma .bss-0x80000000 \
-				--change-section-lma .startdata-0x80000000 \
+export OFLAGS += \
+    --change-section-lma .bootflash-0xA0000000 \
+    --change-section-lma .exception_vector-0x80000000 \
+    --change-section-lma .text-0x80000000 \
+    --change-section-lma .init-0x80000000 \
+    --change-section-lma .fini-0x80000000 \
+    --change-section-lma .eh_frame-0x80000000 \
+    --change-section-lma .gcc_except_table-0x80000000 \
+    --change-section-lma .jcr-0x80000000 \
+    --change-section-lma .ctors-0x80000000 \
+    --change-section-lma .dtors-0x80000000 \
+    --change-section-lma .rodata-0x80000000 \
+    --change-section-lma .data-0x80000000 \
+    --change-section-lma .bss-0x80000000 \
+    --change-section-lma .startdata-0x80000000 \
diff --git a/cpu/mips_pic32mz/Makefile.include b/cpu/mips_pic32mz/Makefile.include
index 1ef2f66d7118a8c95b6969bf912d153fe145e4ff..26ed33e8071da4eeaef9211aaeffd5fedfdf88e4 100644
--- a/cpu/mips_pic32mz/Makefile.include
+++ b/cpu/mips_pic32mz/Makefile.include
@@ -12,7 +12,7 @@ export LINKFLAGS += -Tpic32mz2048_uhi.ld
 
 # the pickit programmer (MPLAB-IPE) wants physical addresses in the hex file!!
 export OBJCOPY = objcopy #use system objcopy as toolchain one is broken.
-export OFLAGS += -O ihex \
+export OFLAGS += \
     --change-section-lma .lowerbootflashalias-0xA0000000 \
     --change-section-lma .bootflash1-0xA0000000 \
     --change-section-lma .bootflash2-0xA0000000 \
diff --git a/makefiles/mcuboot.mk b/makefiles/mcuboot.mk
index 931ebf8b8ba200839e5a41bb3156b6e7b60e6717..b090bb4e271b68304f591e8d00b390537df4458e 100644
--- a/makefiles/mcuboot.mk
+++ b/makefiles/mcuboot.mk
@@ -6,7 +6,6 @@ override IMGTOOL := $(abspath $(IMGTOOL))
 BINFILE ?= $(BINDIR)/$(APPLICATION).bin
 SIGN_BINFILE = $(BINDIR)/signed-$(APPLICATION).bin
 MCUBOOT_KEYFILE ?= $(BINDIR)/key.pem
-OFLAGS = -O binary
 MCUBOOT_BIN ?= $(BINDIR)/mcuboot.bin
 MCUBOOT_BIN_URL ?= http://download.riot-os.org/mynewt.mcuboot.bin
 MCUBOOT_BIN_MD5 ?= 0c71a0589bd3709fc2d90f07a0035ce7
@@ -28,7 +27,7 @@ mcuboot: mcuboot-create-key link
 	$(Q)$(_LINK) $(LINKFLAGPREFIX)--defsym=offset="$$(($(MCUBOOT_SLOT0_SIZE) + $(IMAGE_HDR_SIZE)))" \
 	$(LINKFLAGPREFIX)--defsym=length="$$(($(MCUBOOT_SLOT1_SIZE) - $(IMAGE_HDR_SIZE)))" \
 	$(LINKFLAGPREFIX)--defsym=image_header="$(IMAGE_HDR_SIZE)" -o $(ELFFILE) && \
-	$(OBJCOPY) $(OFLAGS) $(ELFFILE) $(BINFILE) && \
+	$(OBJCOPY) $(OFLAGS) -Obinary $(ELFFILE) $(BINFILE) && \
 	$(IMGTOOL) sign --key $(MCUBOOT_KEYFILE) --version $(IMAGE_VERSION) --align \
 	$(MCUBOOT_IMAGE_ALIGN) -H $(IMAGE_HDR_SIZE) $(BINFILE) $(SIGN_BINFILE)
 	@$(COLOR_ECHO)
diff --git a/makefiles/tools/bossa.inc.mk b/makefiles/tools/bossa.inc.mk
index 1ded05c7ac2d2ae7955c56c7764d576424e7f025..304d350a56e8f4ea6998cb0467a50eb6b4c4090c 100644
--- a/makefiles/tools/bossa.inc.mk
+++ b/makefiles/tools/bossa.inc.mk
@@ -1,8 +1,7 @@
 export FLASHER ?= $(RIOTBASE)/dist/tools/bossa/bossac
 export FFLAGS  ?= -p $(PORT) -e -i -w -v -b -R $(HEXFILE)
 
-export OFLAGS  = -O binary
-export HEXFILE = $(ELFFILE:.elf=.bin)
+HEXFILE = $(BINFILE)
 
 # some arduino boards need to toggle the serial interface a little bit to get
 # them ready for flashing...
diff --git a/makefiles/tools/edbg.inc.mk b/makefiles/tools/edbg.inc.mk
index 4555be3269efedd21533ef1b0b31ccdb183f6d6a..cf9e26c767008da71b2c862064ad14f92c10c245 100644
--- a/makefiles/tools/edbg.inc.mk
+++ b/makefiles/tools/edbg.inc.mk
@@ -1,8 +1,7 @@
 RIOT_EDBG = $(RIOTBASE)/dist/tools/edbg/edbg
 EDBG ?= $(RIOT_EDBG)
 FLASHER ?= $(EDBG)
-OFLAGS ?= -O binary
-HEXFILE = $(ELFFILE:.elf=.bin)
+HEXFILE = $(BINFILE)
 # Use USB serial number to select device when more than one is connected
 # Use /dist/tools/usb-serial/list-ttys.sh to find out serial number.
 #   Usage:
diff --git a/makefiles/tools/jlink.inc.mk b/makefiles/tools/jlink.inc.mk
index 926dbf2e280ac961feff08d268e13583de0e4834..ab6921bc46233d537af1c41fbfe15e61a62e392d 100644
--- a/makefiles/tools/jlink.inc.mk
+++ b/makefiles/tools/jlink.inc.mk
@@ -3,8 +3,7 @@ export DEBUGGER = $(RIOTBASE)/dist/tools/jlink/jlink.sh
 export DEBUGSERVER = $(RIOTBASE)/dist/tools/jlink/jlink.sh
 export RESET = $(RIOTBASE)/dist/tools/jlink/jlink.sh
 
-export OFLAGS = -O binary
-export HEXFILE = $(ELFFILE:.elf=.bin)
+HEXFILE = $(BINFILE)
 
 export FFLAGS ?= flash
 export DEBUGGER_FLAGS ?= debug
diff --git a/makefiles/tools/openocd.inc.mk b/makefiles/tools/openocd.inc.mk
index 045f42c86e649c73e7d6779105c7676d92bd20aa..d2f8bf2e770a432a744fa48c3229f8127c412d85 100644
--- a/makefiles/tools/openocd.inc.mk
+++ b/makefiles/tools/openocd.inc.mk
@@ -3,7 +3,6 @@ export DEBUGGER = $(RIOTBASE)/dist/tools/openocd/openocd.sh
 export DEBUGSERVER = $(RIOTBASE)/dist/tools/openocd/openocd.sh
 export RESET ?= $(RIOTBASE)/dist/tools/openocd/openocd.sh
 
-export OFLAGS ?= -O ihex
 export FFLAGS ?= flash
 export DEBUGGER_FLAGS ?= debug
 export DEBUGSERVER_FLAGS ?= debug-server