Use notification API in BL modes

pull/6781/head
Jimmy Brisson 2018-04-26 09:54:01 -05:00
parent 85e33b4143
commit fcf7dbf4c6
2 changed files with 14 additions and 11 deletions

View File

@ -397,7 +397,7 @@ def _fill_header(region_list, current_region):
start += Config.header_member_size(member) start += Config.header_member_size(member)
return header return header
def merge_region_list(region_list, destination, padding=b'\xFF'): def merge_region_list(region_list, destination, notify, padding=b'\xFF'):
"""Merge the region_list into a single image """Merge the region_list into a single image
Positional Arguments: Positional Arguments:
@ -408,7 +408,7 @@ def merge_region_list(region_list, destination, padding=b'\xFF'):
merged = IntelHex() merged = IntelHex()
_, format = splitext(destination) _, format = splitext(destination)
print("Merging Regions:") notify.info("Merging Regions")
for region in region_list: for region in region_list:
if region.active and not region.filename: if region.active and not region.filename:
@ -419,7 +419,7 @@ def merge_region_list(region_list, destination, padding=b'\xFF'):
_fill_header(region_list, region).tofile(header_filename, format='hex') _fill_header(region_list, region).tofile(header_filename, format='hex')
region = region._replace(filename=header_filename) region = region._replace(filename=header_filename)
if region.filename: if region.filename:
print(" Filling region %s with %s" % (region.name, region.filename)) notify.info(" Filling region %s with %s" % (region.name, region.filename))
part = intelhex_offset(region.filename, offset=region.start) part = intelhex_offset(region.filename, offset=region.start)
part_size = (part.maxaddr() - part.minaddr()) + 1 part_size = (part.maxaddr() - part.minaddr()) + 1
if part_size > region.size: if part_size > region.size:
@ -428,7 +428,8 @@ def merge_region_list(region_list, destination, padding=b'\xFF'):
merged.merge(part) merged.merge(part)
pad_size = region.size - part_size pad_size = region.size - part_size
if pad_size > 0 and region != region_list[-1]: if pad_size > 0 and region != region_list[-1]:
print(" Padding region %s with 0x%x bytes" % (region.name, pad_size)) notify.info(" Padding region %s with 0x%x bytes" %
(region.name, pad_size))
if format is ".hex": if format is ".hex":
"""The offset will be in the hex file generated when we're done, """The offset will be in the hex file generated when we're done,
so we can skip padding here""" so we can skip padding here"""
@ -437,8 +438,8 @@ def merge_region_list(region_list, destination, padding=b'\xFF'):
if not exists(dirname(destination)): if not exists(dirname(destination)):
makedirs(dirname(destination)) makedirs(dirname(destination))
print("Space used after regions merged: 0x%x" % notify.info("Space used after regions merged: 0x%x" %
(merged.maxaddr() - merged.minaddr() + 1)) (merged.maxaddr() - merged.minaddr() + 1))
with open(destination, "wb+") as output: with open(destination, "wb+") as output:
merged.tofile(output, format=format.strip(".")) merged.tofile(output, format=format.strip("."))
@ -574,7 +575,7 @@ def build_project(src_paths, build_path, target, toolchain_name,
for r in region_list] for r in region_list]
res = "%s.%s" % (join(build_path, name), res = "%s.%s" % (join(build_path, name),
getattr(toolchain.target, "OUTPUT_EXT", "bin")) getattr(toolchain.target, "OUTPUT_EXT", "bin"))
merge_region_list(region_list, res) merge_region_list(region_list, res, notify)
else: else:
res, _ = toolchain.link_program(resources, build_path, name) res, _ = toolchain.link_program(resources, build_path, name)

View File

@ -1148,8 +1148,10 @@ class mbedToolchain:
def add_regions(self): def add_regions(self):
"""Add regions to the build profile, if there are any. """Add regions to the build profile, if there are any.
""" """
print("Using regions in this build:") regions = list(self.config.regions)
for region in self.config.regions: self.notify.info("Using regions %s in this build."
% ", ".join(region.name for region in regions))
for region in regions:
for define in [(region.name.upper() + "_ADDR", region.start), for define in [(region.name.upper() + "_ADDR", region.start),
(region.name.upper() + "_SIZE", region.size)]: (region.name.upper() + "_SIZE", region.size)]:
define_string = "-D%s=0x%x" % define define_string = "-D%s=0x%x" % define
@ -1162,8 +1164,8 @@ class mbedToolchain:
define_string = self.make_ld_define(*define) define_string = self.make_ld_define(*define)
self.ld.append(define_string) self.ld.append(define_string)
self.flags["ld"].append(define_string) self.flags["ld"].append(define_string)
print(" Region %s size 0x%x, offset 0x%x" self.notify.info(" Region %s: size 0x%x, offset 0x%x"
% (region.name, region.size, region.start)) % (region.name, region.size, region.start))
# Set the configuration data # Set the configuration data
def set_config_data(self, config_data): def set_config_data(self, config_data):