diff --git a/tools/toolchains/arm.py b/tools/toolchains/arm.py index 88db704132..7b2b6090ab 100644 --- a/tools/toolchains/arm.py +++ b/tools/toolchains/arm.py @@ -82,16 +82,11 @@ class ARM(mbedToolchain): if "--library_type=microlib" not in self.flags['common']: self.flags['common'].append("--library_type=microlib") - if target.core == "Cortex-M0+": - cpu = "Cortex-M0" - elif target.core == "Cortex-M4F": - cpu = "Cortex-M4.fp" - elif target.core == "Cortex-M7FD": - cpu = "Cortex-M7.fp.dp" - elif target.core == "Cortex-M7F": - cpu = "Cortex-M7.fp.sp" - else: - cpu = target.core + cpu = { + "Cortex-M0+": "Cortex-M0plus", + "Cortex-M4F": "Cortex-M4.fp.sp", + "Cortex-M7F": "Cortex-M7.fp.sp", + "Cortex-M7FD": "Cortex-M7.fp.dp"}.get(target.core, target.core) ARM_BIN = join(TOOLCHAIN_PATHS['ARM'], "bin") @@ -559,38 +554,31 @@ class ARMC6(ARM_STD): self.SHEBANG += " -mcpu=%s" % cpu # FPU handling - if core == "Cortex-M4F": + if core == "Cortex-M4" or core == "Cortex-M7" or "core" == "Cortex-M33": + self.flags['common'].append("-mfpu=none") + elif core == "Cortex-M4F": self.flags['common'].append("-mfpu=fpv4-sp-d16") self.flags['common'].append("-mfloat-abi=hard") - self.flags['ld'].append("--cpu=cortex-m4") - elif core == "Cortex-M7F": + elif core == "Cortex-M7F" or core.startswith("Cortex-M33F"): self.flags['common'].append("-mfpu=fpv5-sp-d16") self.flags['common'].append("-mfloat-abi=hard") - self.flags['ld'].append("--cpu=cortex-m7.fp.sp") elif core == "Cortex-M7FD": self.flags['common'].append("-mfpu=fpv5-d16") self.flags['common'].append("-mfloat-abi=hard") - self.flags['ld'].append("--cpu=cortex-m7") - elif core == "Cortex-M33F": - self.flags['common'].append("-mfpu=fpv5-sp-d16") - self.flags['common'].append("-mfloat-abi=hard") - self.flags['ld'].append("--cpu=cortex-m33.no_dsp") - elif core == "Cortex-M33": - self.flags['common'].append("-mfpu=none") - self.flags['ld'].append("--cpu=cortex-m33.no_dsp.no_fp") - else: - self.flags['ld'].append("--cpu=%s" % cpu) - asm_cpu = { - "Cortex-M0+": "Cortex-M0", - "Cortex-M4F": "Cortex-M4.fp", + asm_ld_cpu = { + "Cortex-M0+": "Cortex-M0plus", + "Cortex-M4": "Cortex-M4.no_fp", + "Cortex-M4F": "Cortex-M4", + "Cortex-M7": "Cortex-M7.no_fp", "Cortex-M7F": "Cortex-M7.fp.sp", - "Cortex-M7FD": "Cortex-M7.fp.dp", + "Cortex-M7FD": "Cortex-M7", "Cortex-M33": "Cortex-M33.no_dsp.no_fp", "Cortex-M33F": "Cortex-M33.no_dsp", "Cortex-M33FE": "Cortex-M33"}.get(core, core) - self.flags['asm'].append("--cpu=%s" % asm_cpu) + self.flags['asm'].append("--cpu=%s" % asm_ld_cpu) + self.flags['ld'].append("--cpu=%s" % asm_ld_cpu) self.cc = ([join(TOOLCHAIN_PATHS["ARMC6"], "armclang")] + self.flags['common'] + self.flags['c']) diff --git a/tools/toolchains/gcc.py b/tools/toolchains/gcc.py index 22c0e3c72c..6ee7e8a4d2 100644 --- a/tools/toolchains/gcc.py +++ b/tools/toolchains/gcc.py @@ -78,11 +78,14 @@ class GCC(mbedToolchain): "Cortex-M4F": "cortex-m4", "Cortex-M7F": "cortex-m7", "Cortex-M7FD": "cortex-m7", + "Cortex-M33": "cortex-m33+nodsp", "Cortex-M33F": "cortex-m33+nodsp", "Cortex-M33FE": "cortex-m33"}.get(core, core) - if core == "Cortex-M33": + if cpu == "cortex-m33+nodsp": self.cpu.append("-march=armv8-m.main") + elif cpu == "cortex-m33": + self.cpu.append("-march=armv8-m.main+dsp") else: self.cpu.append("-mcpu={}".format(cpu.lower())) @@ -93,15 +96,12 @@ class GCC(mbedToolchain): if core == "Cortex-M4F": self.cpu.append("-mfpu=fpv4-sp-d16") self.cpu.append("-mfloat-abi=softfp") - elif core == "Cortex-M7F": + elif core == "Cortex-M7F" or core.startswith("Cortex-M33F"): self.cpu.append("-mfpu=fpv5-sp-d16") self.cpu.append("-mfloat-abi=softfp") elif core == "Cortex-M7FD": self.cpu.append("-mfpu=fpv5-d16") self.cpu.append("-mfloat-abi=softfp") - elif core.startswith("Cortex-M33F"): - self.cpu.append("-mfpu=fpv5-sp-d16") - self.cpu.append("-mfloat-abi=softfp") if target.core == "Cortex-A9": self.cpu.append("-mthumb-interwork") diff --git a/tools/toolchains/iar.py b/tools/toolchains/iar.py index 2a25825d0b..14e886ca38 100644 --- a/tools/toolchains/iar.py +++ b/tools/toolchains/iar.py @@ -69,8 +69,8 @@ class IAR(mbedToolchain): self.flags["ld"] += ["--import_cmse_lib_out=%s" % secure_file] cpu = { - "Cortex-M7FD": "Cortex-M7.fp.dp", "Cortex-M7F": "Cortex-M7.fp.sp", + "Cortex-M7FD": "Cortex-M7.fp.dp", "Cortex-M33": "Cortex-M33.no_dsp", "Cortex-M33F": "Cortex-M33.fp.no_dsp", "Cortex-M33FE": "Cortex-M33.fp"}.get(core, core)