Override rom used by managed bootloader with PSA roms

pull/10113/head
Jimmy Brisson 2019-03-14 13:47:47 -05:00
parent 10c6a277d3
commit e798276917
1 changed files with 51 additions and 14 deletions

View File

@ -689,6 +689,32 @@ class Config(object):
)
)
def _get_primary_rom_override(self):
mem_start = None
mem_size = None
if hasattr(self.target, "mbed_rom_start"):
mem_start = getattr(self.target, "mbed_rom_start")
if hasattr(self.target, "mbed_rom_size"):
mem_size = getattr(self.target, "mbed_rom_size")
if (
self.target.is_PSA_non_secure_target or
self.target.is_PSA_secure_target
):
config, _ = self.get_config_data()
if self.target.is_PSA_secure_target:
mem_start = config.get("target.secure-rom-start", mem_start).value
mem_size = config.get("target.secure-rom-size", mem_size).value
elif self.target.is_PSA_non_secure_target:
mem_start = config.get(
"target.non-secure-rom-start", mem_start
).value
mem_size = config.get("target.non-secure-rom-size", mem_size).value
if mem_start and not isinstance(mem_start, int):
mem_start = int(mem_start, 0)
if mem_size and not isinstance(mem_size, int):
mem_size = int(mem_size, 0)
return mem_start, mem_size
def get_all_active_memories(self, memory_list):
"""Get information of all available rom/ram memories in the form of
dictionary {Memory: [start_addr, size]}. Takes in the argument, a
@ -713,18 +739,28 @@ class Config(object):
except ConfigException:
""" If the target doesn't exits in cmsis, but present in targets.json
with ram and rom start/size defined"""
if getattr(self.target, "mbed_ram_start") and \
getattr(self.target, "mbed_rom_start"):
mem_start = int(getattr(
self.target,
"mbed_" + active_memory.lower() + "_start"
), 0)
mem_size = int(getattr(
self.target,
"mbed_" + active_memory.lower() + "_size"
), 0)
if (
getattr(self.target, "mbed_ram_start")
and active_memory == 'RAM'
):
mem_start = int(getattr(self.target, "mbed_ram_start"), 0)
mem_size = int(getattr(self.target, "mbed_ram_size"), 0)
available_memories[active_memory] = [mem_start, mem_size]
return available_memories
elif active_memory == 'ROM':
start, size = self._get_primary_rom_override()
if not start:
raise ConfigException(
"Bootloader not supported on this target. rom "
"start not found in targets.json."
)
if not size:
raise ConfigException(
"Bootloader not supported on this target. rom "
"size not found in targets.json."
)
available_memories[active_memory] = [start, size]
return available_memories
else:
raise ConfigException(
"Bootloader not supported on this target. ram/rom "
@ -742,10 +778,11 @@ class Config(object):
mem_start = memories[memory]["start"]
mem_size = memories[memory]["size"]
if memory in ['IROM1', 'PROGRAM_FLASH']:
if getattr(self.target, "mbed_rom_start", False):
mem_start = getattr(self.target, "mbed_rom_start")
if getattr(self.target, "mbed_rom_size", False):
mem_size = getattr(self.target, "mbed_rom_size")
start, size = self._get_primary_rom_override()
if start:
mem_start = start
if size:
mem_size = size
memory = 'ROM'
elif memory in ['IRAM1', 'SRAM_OC', 'SRAM_UPPER', 'SRAM']:
if (self.has_ram_regions):