Skip to content

Commit c069cef

Browse files
author
Jammu Kekkonen
committed
Review fixes 2 for bootloader region generation
1 parent ae4b67e commit c069cef

File tree

2 files changed

+13
-16
lines changed

2 files changed

+13
-16
lines changed

tools/build_api.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -425,11 +425,11 @@ def merge_region_list(region_list, destination, notify, padding=b'\xFF'):
425425
notify.info(" Filling region %s with %s" % (region.name, region.filename))
426426
part = intelhex_offset(region.filename, offset=region.start)
427427
part.start_addr = None
428-
if len(part.segments()) == 1:
429-
part_size = (part.maxaddr() - part.minaddr()) + 1
430-
else:
431-
# make same assumption as in region builder; first segments must fit.
432-
part_size = part.segments()[0][1] - part.segments()[0][0]
428+
429+
# make same assumption as in region builder; first segment must fit.
430+
# this is only to get a neat ToolException anyway, since IntelHex.merge will
431+
# throw intelhex.AddressOverlapError if there's overlapping
432+
part_size = part.segments()[0][1] - part.segments()[0][0]
433433

434434
if part_size > region.size:
435435
raise ToolException("Contents of region %s does not fit"

tools/config/__init__.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -711,19 +711,16 @@ def _generate_bootloader_build(self, rom_start, rom_size):
711711
if part.minaddr() != rom_start:
712712
raise ConfigException("bootloader executable does not "
713713
"start at 0x%x" % rom_start)
714-
if len(part.segments()) == 1:
715-
part_size = (part.maxaddr() - part.minaddr()) + 1
716-
part_size = Config._align_ceiling(rom_start + part_size, self.sectors) - rom_start
717-
else:
718-
# assume first segment is at start
714+
715+
# segments returns start address and 'next after end' address
716+
part_size = part.segments()[0][1] - part.segments()[0][0]
717+
part_size = Config._align_ceiling(rom_start + part_size, self.sectors) - rom_start
718+
719+
if len(part.segments()) > 1 and part.segments()[1][0] < rom_end:
720+
# assume first segment is at start (already checked earlier as segments are returned in order)
719721
# second at the end or outside ROM
720722
# rest outside regular ROM
721-
if part.segments()[0][0] != rom_start:
722-
raise ConfigException("bootloader segments not in order")
723-
part_size = part.segments()[0][1] - part.segments()[0][0]
724-
part_size = Config._align_ceiling(rom_start + part_size, self.sectors) - rom_start
725-
if part.segments()[1][0] < rom_end:
726-
max_app_addr = part.segments()[1][0]
723+
max_app_addr = part.segments()[1][0]
727724

728725
yield Region("bootloader", rom_start, part_size, False,
729726
filename)

0 commit comments

Comments
 (0)