@@ -441,6 +441,9 @@ def __init__(self, tgt, top_level_dirs=None, app_config=None):
441
441
self .target = tgt
442
442
self .target = deepcopy (self .target )
443
443
self .target_labels = self .target .labels
444
+ for override in self .__unused_overrides :
445
+ _ , attr = override .split ("." )
446
+ setattr (self .target , attr , None )
444
447
445
448
self .cumulative_overrides = {key : ConfigCumulativeOverride (key )
446
449
for key in CUMULATIVE_ATTRIBUTES }
@@ -488,15 +491,11 @@ def add_config_files(self, flist):
488
491
@property
489
492
def has_regions (self ):
490
493
"""Does this config have regions defined?"""
491
- if 'target_overrides' in self .app_config_data :
492
- target_overrides = self .app_config_data ['target_overrides' ].get (
493
- self .target .name , {})
494
- return ('target.bootloader_img' in target_overrides or
495
- 'target.restrict_size' in target_overrides or
496
- 'target.mbed_app_start' in target_overrides or
497
- 'target.mbed_app_size' in target_overrides )
498
- else :
499
- return False
494
+ for override in self .__unused_overrides :
495
+ _ , attr = override .split ("." )
496
+ if getattr (self .target , attr , None ):
497
+ return True
498
+ return False
500
499
501
500
@property
502
501
def sectors (self ):
@@ -526,12 +525,8 @@ def regions(self):
526
525
"targets.json `device_name` not found in "
527
526
"arm_pack_manager index." )
528
527
cmsis_part = cache .index [self .target .device_name ]
529
- target_overrides = self .app_config_data ['target_overrides' ].get (
530
- self .target .name , {})
531
- if (('target.bootloader_img' in target_overrides or
532
- 'target.restrict_size' in target_overrides ) and
533
- ('target.mbed_app_start' in target_overrides or
534
- 'target.mbed_app_size' in target_overrides )):
528
+ if ((self .target .bootloader_img or self .target .restrict_size ) and
529
+ (self .target .mbed_app_start or self .target .mbed_app_size )):
535
530
raise ConfigException (
536
531
"target.bootloader_img and target.restirct_size are "
537
532
"incompatible with target.mbed_app_start and "
@@ -546,23 +541,19 @@ def regions(self):
546
541
except KeyError :
547
542
raise ConfigException ("Not enough information in CMSIS packs to "
548
543
"build a bootloader project" )
549
- if ('target.bootloader_img' in target_overrides or
550
- 'target.restrict_size' in target_overrides ):
551
- return self ._generate_bootloader_build (target_overrides ,
552
- rom_start , rom_size )
553
- elif ('target.mbed_app_start' in target_overrides or
554
- 'target.mbed_app_size' in target_overrides ):
555
- return self ._generate_linker_overrides (target_overrides ,
556
- rom_start , rom_size )
544
+ if self .target .bootloader_img or self .target .restrict_size :
545
+ return self ._generate_bootloader_build (rom_start , rom_size )
546
+ elif self .target .mbed_app_start or self .target .mbed_app_size :
547
+ return self ._generate_linker_overrides (rom_start , rom_size )
557
548
else :
558
549
raise ConfigException (
559
550
"Bootloader build requested but no bootlader configuration" )
560
551
561
- def _generate_bootloader_build (self , target_overrides , rom_start , rom_size ):
552
+ def _generate_bootloader_build (self , rom_start , rom_size ):
562
553
start = rom_start
563
- if ' target.bootloader_img' in target_overrides :
554
+ if self . target .bootloader_img :
564
555
basedir = abspath (dirname (self .app_config_location ))
565
- filename = join (basedir , target_overrides [ ' target.bootloader_img' ] )
556
+ filename = join (basedir , self . target .bootloader_img )
566
557
if not exists (filename ):
567
558
raise ConfigException ("Bootloader %s not found" % filename )
568
559
part = intelhex_offset (filename , offset = rom_start )
@@ -574,8 +565,8 @@ def _generate_bootloader_build(self, target_overrides, rom_start, rom_size):
574
565
yield Region ("bootloader" , rom_start , part_size , False ,
575
566
filename )
576
567
start = rom_start + part_size
577
- if ' target.restrict_size' in target_overrides :
578
- new_size = int (target_overrides [ ' target.restrict_size' ] , 0 )
568
+ if self . target .restrict_size is not None :
569
+ new_size = int (self . target .restrict_size , 0 )
579
570
new_size = Config ._align_floor (start + new_size , self .sectors ) - start
580
571
yield Region ("application" , start , new_size , True , None )
581
572
start += new_size
@@ -618,14 +609,13 @@ def report(self):
618
609
return {'app_config' : self .app_config_location ,
619
610
'library_configs' : map (relpath , self .processed_configs .keys ())}
620
611
621
- @staticmethod
622
- def _generate_linker_overrides (target_overrides , rom_start , rom_size ):
623
- if 'target.mbed_app_start' in target_overrides :
624
- start = int (target_overrides ['target.mbed_app_start' ], 0 )
612
+ def _generate_linker_overrides (self , rom_start , rom_size ):
613
+ if self .target .mbed_app_start is not None :
614
+ start = int (self .target .mbed_app_start , 0 )
625
615
else :
626
616
start = rom_start
627
- if ' target.mbed_app_size' in target_overrides :
628
- size = int (target_overrides [ ' target.mbed_app_size' ] , 0 )
617
+ if self . target .mbed_app_size is not None :
618
+ size = int (self . target .mbed_app_size , 0 )
629
619
else :
630
620
size = (rom_size + rom_start ) - start
631
621
if start < rom_start :
@@ -701,10 +691,9 @@ def _process_config_and_overrides(self, data, params, unit_name, unit_kind):
701
691
if full_name in params :
702
692
params [full_name ].set_value (val , unit_name , unit_kind ,
703
693
label )
704
- elif name in self .__unused_overrides :
705
- pass
706
694
elif (name .startswith ("target." ) and
707
- unit_kind is "application" ):
695
+ unit_kind is "application" or
696
+ name in self .__unused_overrides ):
708
697
_ , attribute = name .split ("." )
709
698
setattr (self .target , attribute , val )
710
699
else :
0 commit comments