Review fixes 2 for bootloader region generation

pull/8097/head
Jammu Kekkonen 2018-09-17 15:56:34 +03:00
parent ae4b67e6b2
commit c069cefbc8
2 changed files with 13 additions and 16 deletions

View File

@ -425,11 +425,11 @@ def merge_region_list(region_list, destination, notify, padding=b'\xFF'):
notify.info(" Filling region %s with %s" % (region.name, region.filename))
part = intelhex_offset(region.filename, offset=region.start)
part.start_addr = None
if len(part.segments()) == 1:
part_size = (part.maxaddr() - part.minaddr()) + 1
else:
# make same assumption as in region builder; first segments must fit.
part_size = part.segments()[0][1] - part.segments()[0][0]
# make same assumption as in region builder; first segment must fit.
# this is only to get a neat ToolException anyway, since IntelHex.merge will
# throw intelhex.AddressOverlapError if there's overlapping
part_size = part.segments()[0][1] - part.segments()[0][0]
if part_size > region.size:
raise ToolException("Contents of region %s does not fit"

View File

@ -711,19 +711,16 @@ class Config(object):
if part.minaddr() != rom_start:
raise ConfigException("bootloader executable does not "
"start at 0x%x" % rom_start)
if len(part.segments()) == 1:
part_size = (part.maxaddr() - part.minaddr()) + 1
part_size = Config._align_ceiling(rom_start + part_size, self.sectors) - rom_start
else:
# assume first segment is at start
# segments returns start address and 'next after end' address
part_size = part.segments()[0][1] - part.segments()[0][0]
part_size = Config._align_ceiling(rom_start + part_size, self.sectors) - rom_start
if len(part.segments()) > 1 and part.segments()[1][0] < rom_end:
# assume first segment is at start (already checked earlier as segments are returned in order)
# second at the end or outside ROM
# rest outside regular ROM
if part.segments()[0][0] != rom_start:
raise ConfigException("bootloader segments not in order")
part_size = part.segments()[0][1] - part.segments()[0][0]
part_size = Config._align_ceiling(rom_start + part_size, self.sectors) - rom_start
if part.segments()[1][0] < rom_end:
max_app_addr = part.segments()[1][0]
max_app_addr = part.segments()[1][0]
yield Region("bootloader", rom_start, part_size, False,
filename)