tools: update build_api and __init__ as per review comments

pull/8097/head
Naveen Kaje 2018-11-04 19:39:20 -06:00
parent 2da8950b2a
commit e28c260763
2 changed files with 14 additions and 5 deletions

View File

@ -436,6 +436,10 @@ def merge_region_list(region_list, destination, notify, padding=b'\xFF'):
# throw intelhex.AddressOverlapError if there's overlapping
part_size = 0
for es in part.segments():
# Add padding in between segments starting from end of first segment
if (len(part.segments()) > 1 and (merged.maxaddr() != None)):
pad_size = es[0] - (merged.maxaddr() + 1)
merged.puts(merged.maxaddr()+1, padding * pad_size)
part_size += es[1] - es[0]
merged.merge(part[es[0]:_end_addr_inclusive(es[1])])
@ -443,7 +447,12 @@ def merge_region_list(region_list, destination, notify, padding=b'\xFF'):
raise ToolException("Contents of region %s does not fit"
% region.name)
pad_size = region.size - part_size
# This padding applies for only files with one segment
if (len(part.segments()) == 1):
pad_size = region.size - part_size
else:
pad_size = 0
if pad_size > 0 and region != region_list[-1] and format != ".hex":
notify.info(" Padding region %s with 0x%x bytes" %
(region.name, pad_size))

View File

@ -714,14 +714,14 @@ class Config(object):
# find the last valid address that's within rom_end and use that
# to compute the bootloader size
end_address = None
for each in part.segments():
if (each[1] < rom_end):
end_address = each[1]
for start, stop in part.segments():
if (stop < rom_end):
end_address = stop
else:
break
if end_address == None:
raise ConfigException("bootloader segments don't fit within rom region")
part_size = Config._align_ceiling(rom_start + (end_address - start), self.sectors) - rom_start
part_size = Config._align_ceiling(end_address, self.sectors) - rom_start
yield Region("bootloader", rom_start, part_size, False,
filename)