@@ -346,6 +346,7 @@ def merge_region_list(region_list, destination, padding=b'\xFF'):
346
346
padding - bytes to fill gapps with
347
347
"""
348
348
merged = IntelHex ()
349
+ _ , format = splitext (destination )
349
350
350
351
print ("Merging Regions:" )
351
352
@@ -363,14 +364,18 @@ def merge_region_list(region_list, destination, padding=b'\xFF'):
363
364
pad_size = region .size - part_size
364
365
if pad_size > 0 and region != region_list [- 1 ]:
365
366
print (" Padding region %s with 0x%x bytes" % (region .name , pad_size ))
366
- merged .puts (merged .maxaddr () + 1 , padding * pad_size )
367
+ if format is ".hex" :
368
+ """The offset will be in the hex file generated when we're done,
369
+ so we can skip padding here"""
370
+ else :
371
+ merged .puts (merged .maxaddr () + 1 , padding * pad_size )
367
372
368
373
if not exists (dirname (destination )):
369
374
makedirs (dirname (destination ))
370
375
print ("Space used after regions merged: 0x%x" %
371
376
(merged .maxaddr () - merged .minaddr () + 1 ))
372
377
with open (destination , "wb+" ) as output :
373
- merged .tofile (output , format = 'bin' )
378
+ merged .tofile (output , format = format . strip ( "." ) )
374
379
375
380
def scan_resources (src_paths , toolchain , dependencies_paths = None ,
376
381
inc_dirs = None , base_path = None , collect_ignores = False ):
@@ -512,7 +517,8 @@ def build_project(src_paths, build_path, target, toolchain_name,
512
517
region_list = list (toolchain .config .regions )
513
518
region_list = [r ._replace (filename = res ) if r .active else r
514
519
for r in region_list ]
515
- res = join (build_path , name ) + ".bin"
520
+ res = "%s.%s" % (join (build_path , name ),
521
+ getattr (toolchain .target , "OUTPUT_EXT" , "bin" ))
516
522
merge_region_list (region_list , res )
517
523
else :
518
524
res , _ = toolchain .link_program (resources , build_path , name )
0 commit comments