Skip to content

Commit da3a759

Browse files
authored
Merge pull request #10157 from theotherjimmy/dedupe-mbed-rom
Deduplicate IAR MBED_ROM__xxxx defines
2 parents 23cd1aa + dabad7a commit da3a759

File tree

2 files changed

+44
-60
lines changed

2 files changed

+44
-60
lines changed

tools/config/__init__.py

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -689,26 +689,35 @@ def _get_mem_specs(self, permissions, cmsis_part):
689689
)
690690
)
691691

692-
def _get_primary_rom_override(self):
692+
def _get_primary_memory_override(self, memory_type):
693693
mem_start = None
694694
mem_size = None
695-
if hasattr(self.target, "mbed_rom_start"):
696-
mem_start = getattr(self.target, "mbed_rom_start")
697-
if hasattr(self.target, "mbed_rom_size"):
698-
mem_size = getattr(self.target, "mbed_rom_size")
695+
if hasattr(self.target, "mbed_{}_start".format(memory_type)):
696+
mem_start = getattr(
697+
self.target,
698+
"mbed_{}_start".format(memory_type)
699+
)
700+
if hasattr(self.target, "mbed_{}_size".format(memory_type)):
701+
mem_size = getattr(self.target, "mbed_{}_size".format(memory_type))
699702
if (
700703
self.target.is_PSA_non_secure_target or
701704
self.target.is_PSA_secure_target
702705
):
703706
config, _ = self.get_config_data()
704707
if self.target.is_PSA_secure_target:
705-
mem_start = config.get("target.secure-rom-start", mem_start).value
706-
mem_size = config.get("target.secure-rom-size", mem_size).value
708+
mem_start = config.get(
709+
"target.secure-{}-start".format(memory_type), mem_start
710+
).value
711+
mem_size = config.get(
712+
"target.secure-{}-size".format(memory_type), mem_size
713+
).value
707714
elif self.target.is_PSA_non_secure_target:
708715
mem_start = config.get(
709-
"target.non-secure-rom-start", mem_start
716+
"target.non-secure-{}-start".format(memory_type), mem_start
717+
).value
718+
mem_size = config.get(
719+
"target.non-secure-{}-size".format(memory_type), mem_size
710720
).value
711-
mem_size = config.get("target.non-secure-rom-size", mem_size).value
712721
if mem_start and not isinstance(mem_start, int):
713722
mem_start = int(mem_start, 0)
714723
if mem_size and not isinstance(mem_size, int):
@@ -739,33 +748,21 @@ def get_all_active_memories(self, memory_list):
739748
except ConfigException:
740749
""" If the target doesn't exits in cmsis, but present in targets.json
741750
with ram and rom start/size defined"""
742-
if (
743-
getattr(self.target, "mbed_ram_start")
744-
and active_memory == 'RAM'
745-
):
746-
mem_start = int(getattr(self.target, "mbed_ram_start"), 0)
747-
mem_size = int(getattr(self.target, "mbed_ram_size"), 0)
748-
available_memories[active_memory] = [mem_start, mem_size]
749-
return available_memories
750-
elif active_memory == 'ROM':
751-
start, size = self._get_primary_rom_override()
752-
if not start:
753-
raise ConfigException(
754-
"Bootloader not supported on this target. rom "
755-
"start not found in targets.json."
756-
)
757-
if not size:
758-
raise ConfigException(
759-
"Bootloader not supported on this target. rom "
760-
"size not found in targets.json."
761-
)
762-
available_memories[active_memory] = [start, size]
763-
return available_memories
764-
else:
751+
start, size = self._get_primary_memory_override(
752+
active_memory.lower()
753+
)
754+
if not start:
755+
raise ConfigException(
756+
"Bootloader not supported on this target. {} "
757+
"start not found in targets.json.".format(active_memory)
758+
)
759+
if not size:
765760
raise ConfigException(
766-
"Bootloader not supported on this target. ram/rom "
767-
"start/size not found in targets.json."
761+
"Bootloader not supported on this target. {} "
762+
"size not found in targets.json.".format(active_memory)
768763
)
764+
available_memories[active_memory] = [start, size]
765+
return available_memories
769766

770767
present_memories = set(cmsis_part['memories'].keys())
771768
valid_memories = set(memory_list).intersection(present_memories)
@@ -778,7 +775,7 @@ def get_all_active_memories(self, memory_list):
778775
mem_start = memories[memory]["start"]
779776
mem_size = memories[memory]["size"]
780777
if memory in ['IROM1', 'PROGRAM_FLASH']:
781-
start, size = self._get_primary_rom_override()
778+
start, size = self._get_primary_memory_override("rom")
782779
if start:
783780
mem_start = start
784781
if size:
@@ -787,10 +784,11 @@ def get_all_active_memories(self, memory_list):
787784
elif memory in ['IRAM1', 'SRAM_OC', 'SRAM_UPPER', 'SRAM']:
788785
if (self.has_ram_regions):
789786
continue
790-
if getattr(self.target, "mbed_ram_start", False):
791-
mem_start = getattr(self.target, "mbed_ram_start")
792-
if getattr(self.target, "mbed_ram_start", False):
793-
mem_size = getattr(self.target, "mbed_ram_size")
787+
start, size = self._get_primary_memory_override("ram")
788+
if start:
789+
mem_start = start
790+
if size:
791+
mem_size = size
794792
memory = 'RAM'
795793
else:
796794
active_memory_counter += 1

tools/toolchains/mbed_toolchain.py

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -926,28 +926,14 @@ def add_linker_defines(self):
926926
self.ld.append(define_string)
927927
self.flags["ld"].append(define_string)
928928

929-
flags2params = {}
930-
if self.target.is_PSA_non_secure_target:
931-
flags2params = {
932-
"MBED_ROM_START": "target.non-secure-rom-start",
933-
"MBED_ROM_SIZE": "target.non-secure-rom-size",
934-
"MBED_RAM_START": "target.non-secure-ram-start",
935-
"MBED_RAM_SIZE": "target.non-secure-ram-size"
936-
}
937929
if self.target.is_PSA_secure_target:
938-
flags2params = {
939-
"MBED_ROM_START": "target.secure-rom-start",
940-
"MBED_ROM_SIZE": "target.secure-rom-size",
941-
"MBED_RAM_START": "target.secure-ram-start",
942-
"MBED_RAM_SIZE": "target.secure-ram-size",
943-
"MBED_PUBLIC_RAM_START": "target.public-ram-start",
944-
"MBED_PUBLIC_RAM_SIZE": "target.public-ram-size"
945-
}
946-
947-
for flag, param in flags2params.items():
948-
define_string = self.make_ld_define(flag, params[param].value)
949-
self.ld.append(define_string)
950-
self.flags["ld"].append(define_string)
930+
for flag, param in [
931+
("MBED_PUBLIC_RAM_START", "target.public-ram-start"),
932+
("MBED_PUBLIC_RAM_SIZE", "target.public-ram-size")
933+
]:
934+
define_string = self.make_ld_define(flag, params[param].value)
935+
self.ld.append(define_string)
936+
self.flags["ld"].append(define_string)
951937

952938
# Set the configuration data
953939
def set_config_data(self, config_data):

0 commit comments

Comments
 (0)