mirror of https://github.com/ARMmbed/mbed-os.git
Review fixes 2 for bootloader region generation
parent
ae4b67e6b2
commit
c069cefbc8
tools
config
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue