mirror of https://github.com/ARMmbed/mbed-os.git
Add functions for getting sectors in Config class
parent
5009fdb5fc
commit
a2195082cc
|
@ -498,6 +498,17 @@ class Config(object):
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@property
|
||||||
|
def sectors(self):
|
||||||
|
"""Return a list of tuples of sector start,size"""
|
||||||
|
cache = Cache(False, False)
|
||||||
|
if self.target.device_name not in cache.index:
|
||||||
|
raise ConfigException("Bootloader not supported on this target: "
|
||||||
|
"targets.json `device_name` not found in "
|
||||||
|
"arm_pack_manager index.")
|
||||||
|
cmsis_part = cache.index[self.target.device_name]
|
||||||
|
return cmsis_part['sectors']
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def regions(self):
|
def regions(self):
|
||||||
"""Generate a list of regions from the config"""
|
"""Generate a list of regions from the config"""
|
||||||
|
@ -526,7 +537,11 @@ class Config(object):
|
||||||
rom_size = int(cmsis_part['memory']['IROM1']['size'], 0)
|
rom_size = int(cmsis_part['memory']['IROM1']['size'], 0)
|
||||||
rom_start = int(cmsis_part['memory']['IROM1']['start'], 0)
|
rom_start = int(cmsis_part['memory']['IROM1']['start'], 0)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise ConfigException("Not enough information in CMSIS packs to "
|
try:
|
||||||
|
rom_size = int(cmsis_part['memory']['PROGRAM_FLASH']['size'], 0)
|
||||||
|
rom_start = int(cmsis_part['memory']['PROGRAM_FLASH']['start'], 0)
|
||||||
|
except KeyError:
|
||||||
|
raise ConfigException("Not enough information in CMSIS packs to "
|
||||||
"build a bootloader project")
|
"build a bootloader project")
|
||||||
if ('target.bootloader_img' in target_overrides or
|
if ('target.bootloader_img' in target_overrides or
|
||||||
'target.restrict_size' in target_overrides):
|
'target.restrict_size' in target_overrides):
|
||||||
|
@ -567,6 +582,19 @@ class Config(object):
|
||||||
if start > rom_size:
|
if start > rom_size:
|
||||||
raise ConfigException("Not enough memory on device to fit all "
|
raise ConfigException("Not enough memory on device to fit all "
|
||||||
"application regions")
|
"application regions")
|
||||||
|
@staticmethod
|
||||||
|
def _align_on_sector(address, sectors):
|
||||||
|
target_size = -1
|
||||||
|
target_start = -1
|
||||||
|
for (start, size) in sectors:
|
||||||
|
if address < start:
|
||||||
|
break
|
||||||
|
target_start = start
|
||||||
|
target_size = size
|
||||||
|
if (target_size < 0):
|
||||||
|
return target_size
|
||||||
|
sector_num = (address - target_start)//target_size
|
||||||
|
return target_start + (sector_num*target_size)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def report(self):
|
def report(self):
|
||||||
|
|
Loading…
Reference in New Issue