@@ -698,7 +698,7 @@ def _assign_new_offset(rom_start, start, new_offset, region_name):
698
698
def _generate_bootloader_build (self , rom_start , rom_size ):
699
699
start = rom_start
700
700
rom_end = rom_start + rom_size
701
- max_app_addr = - 1
701
+ max_app_addr = None
702
702
if self .target .bootloader_img :
703
703
if isabs (self .target .bootloader_img ):
704
704
filename = self .target .bootloader_img
@@ -718,15 +718,12 @@ def _generate_bootloader_build(self, rom_start, rom_size):
718
718
# assume first segment is at start
719
719
# second at the end or outside ROM
720
720
# rest outside regular ROM
721
- if part .segments ()[0 ][0 ] != 0x0 :
721
+ if part .segments ()[0 ][0 ] != rom_start :
722
722
raise ConfigException ("bootloader segments not in order" )
723
723
part_size = part .segments ()[0 ][1 ] - part .segments ()[0 ][0 ]
724
724
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 ]
730
727
731
728
yield Region ("bootloader" , rom_start , part_size , False ,
732
729
filename )
@@ -739,8 +736,12 @@ def _generate_bootloader_build(self, rom_start, rom_size):
739
736
start , self .target .header_format )
740
737
yield region ._replace (filename = self .target .header_format )
741
738
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 )
744
745
745
746
if self .target .restrict_size is not None :
746
747
new_size = int (self .target .restrict_size , 0 )
0 commit comments