diff --git a/tools/toolchains/__init__.py b/tools/toolchains/__init__.py index cc68ae1d52..97d1337edd 100644 --- a/tools/toolchains/__init__.py +++ b/tools/toolchains/__init__.py @@ -1003,7 +1003,7 @@ class mbedToolchain: filename = name+'.'+ext elf = join(tmp_path, name + '.elf') - bin = join(tmp_path, filename) + bin = None if ext is 'elf' else join(tmp_path, filename) map = join(tmp_path, name + '.map') r.objects = sorted(set(r.objects)) @@ -1012,7 +1012,7 @@ class mbedToolchain: self.progress("link", name) self.link(elf, r.objects, r.libraries, r.lib_dirs, r.linker_script) - if self.need_update(bin, [elf]): + if bin and self.need_update(bin, [elf]): needed_update = True self.progress("elf2bin", name) self.binary(r, elf, bin) diff --git a/tools/toolchains/arm.py b/tools/toolchains/arm.py index 9fc0146e11..511a1132b9 100644 --- a/tools/toolchains/arm.py +++ b/tools/toolchains/arm.py @@ -216,8 +216,10 @@ class ARM(mbedToolchain): @hook_tool def binary(self, resources, elf, bin): + _, fmt = splitext(bin) + bin_arg = {".bin": "--bin", ".hex": "--i32"}[fmt] # Build binary command - cmd = [self.elf2bin, '--bin', '-o', bin, elf] + cmd = [self.elf2bin, bin_arg, '-o', bin, elf] # Call cmdline hook cmd = self.hook.get_cmdline_binary(cmd) diff --git a/tools/toolchains/gcc.py b/tools/toolchains/gcc.py index 9b6cbd8b15..2eb65dc38a 100644 --- a/tools/toolchains/gcc.py +++ b/tools/toolchains/gcc.py @@ -261,7 +261,9 @@ class GCC(mbedToolchain): @hook_tool def binary(self, resources, elf, bin): # Build binary command - cmd = [self.elf2bin, "-O", "binary", elf, bin] + _, fmt = splitext(bin) + bin_arg = {'.bin': 'binary', '.hex': 'ihex'}[fmt] + cmd = [self.elf2bin, "-O", bin_arg, elf, bin] # Call cmdline hook cmd = self.hook.get_cmdline_binary(cmd) diff --git a/tools/toolchains/iar.py b/tools/toolchains/iar.py index f14eed231c..92094757d9 100644 --- a/tools/toolchains/iar.py +++ b/tools/toolchains/iar.py @@ -224,8 +224,10 @@ class IAR(mbedToolchain): @hook_tool def binary(self, resources, elf, bin): + _, fmt = splitext(bin) + bin_arg = {".bin": "--bin", ".hex": "--ihex"}[fmt] # Build binary command - cmd = [self.elf2bin, "--bin", elf, bin] + cmd = [self.elf2bin, bin_arg, elf, bin] # Call cmdline hook cmd = self.hook.get_cmdline_binary(cmd)