Skip to content

Commit fcb8d94

Browse files
committed
cbuild-run: add device-settings node processing
1 parent f052334 commit fcb8d94

1 file changed

Lines changed: 22 additions & 5 deletions

File tree

pyocd/target/pack/cbuild_run.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,6 +1211,7 @@ def __init__(self, device: CbuildRun) -> None:
12111211

12121212
self._debugvars: Optional[Block] = None
12131213
self._debugvars_conf: Optional[Block] = None
1214+
self._device_settings: Optional[Block] = None
12141215
self._sequences: Set[DebugSequence] = set()
12151216

12161217
@property
@@ -1232,6 +1233,15 @@ def dbgconf_variables(self) -> Optional[Block]:
12321233
self._debugvars_conf = self._dbgconf_variables(dbgconf_file)
12331234
return self._debugvars_conf
12341235

1236+
@property
1237+
def device_settings(self) -> Optional[Block]:
1238+
if self._device_settings is None:
1239+
_device_settings = self._cbuild_debugger.get('device-settings') or {}
1240+
settings = "".join(f"{key} = {value};\n" for key, value in _device_settings.items())
1241+
if settings:
1242+
self._device_settings = Block(settings, info='device-settings')
1243+
return self._device_settings
1244+
12351245
@property
12361246
def sequences(self) -> Set[DebugSequence]:
12371247
if not self._sequences:
@@ -1320,11 +1330,18 @@ def get_root_scope(self, context: DebugSequenceExecutionContext) -> Scope:
13201330
with context.push(debugvars_block, self._debugvars):
13211331
debugvars_block.execute(context)
13221332

1323-
# Override default debugvars with values from *.dbgconf file.
1324-
debugvars_conf_block = self._cbuild_sequences.dbgconf_variables
1325-
if debugvars_conf_block is not None:
1326-
with context.push(debugvars_conf_block, self._debugvars):
1327-
debugvars_conf_block.execute(context)
1333+
# if `device-settings:` is present then an also specified `*.dbgconf` file is ignored.
1334+
device_settings_block = self._cbuild_sequences.device_settings
1335+
if device_settings_block is not None:
1336+
# Override debugvars with values from the 'device-settings' node in *.cbuild-run.yml
1337+
with context.push(device_settings_block, self._debugvars):
1338+
device_settings_block.execute(context)
1339+
else:
1340+
# Override default debugvars with values from *.dbgconf file.
1341+
debugvars_conf_block = self._cbuild_sequences.dbgconf_variables
1342+
if debugvars_conf_block is not None:
1343+
with context.push(debugvars_conf_block, self._debugvars):
1344+
debugvars_conf_block.execute(context)
13281345

13291346
# Make all vars read-only.
13301347
self._debugvars.freeze()

0 commit comments

Comments
 (0)