Skip to content

Commit ae4b67e

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

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

tools/config/__init__.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,7 @@ def _assign_new_offset(rom_start, start, new_offset, region_name):
698698
def _generate_bootloader_build(self, rom_start, rom_size):
699699
start = rom_start
700700
rom_end = rom_start + rom_size
701-
max_app_addr = -1
701+
max_app_addr = None
702702
if self.target.bootloader_img:
703703
if isabs(self.target.bootloader_img):
704704
filename = self.target.bootloader_img
@@ -718,15 +718,12 @@ def _generate_bootloader_build(self, rom_start, rom_size):
718718
# assume first segment is at start
719719
# second at the end or outside ROM
720720
# rest outside regular ROM
721-
if part.segments()[0][0] != 0x0:
721+
if part.segments()[0][0] != rom_start:
722722
raise ConfigException("bootloader segments not in order")
723723
part_size = part.segments()[0][1] - part.segments()[0][0]
724724
part_size = Config._align_ceiling(rom_start + part_size, self.sectors) - rom_start
725-
if part.segments()[1][0] < rom_end and self.target.restrict_size is None:
726-
if self.target.app_offset:
727-
self.target.restrict_size = "0x%x" % (part.segments()[1][0] - int(self.target.app_offset, 0))
728-
else:
729-
max_app_addr = part.segments()[1][0]
725+
if part.segments()[1][0] < rom_end:
726+
max_app_addr = part.segments()[1][0]
730727

731728
yield Region("bootloader", rom_start, part_size, False,
732729
filename)
@@ -739,8 +736,12 @@ def _generate_bootloader_build(self, rom_start, rom_size):
739736
start, self.target.header_format)
740737
yield region._replace(filename=self.target.header_format)
741738

742-
if max_app_addr != -1 and self.target.restrict_size is None and not self.target.app_offset:
743-
self.target.restrict_size = "0x%x" % (max_app_addr - start)
739+
if max_app_addr is not None and self.target.restrict_size is None:
740+
# Multipart bootloader restricts the app size
741+
if self.target.app_offset:
742+
self.target.restrict_size = "0x%x" % (max_app_addr - int(self.target.app_offset, 0))
743+
else:
744+
self.target.restrict_size = "0x%x" % (max_app_addr - start)
744745

745746
if self.target.restrict_size is not None:
746747
new_size = int(self.target.restrict_size, 0)

0 commit comments

Comments
 (0)