Skip to content

Commit f1a75d7

Browse files
mathieuchopstmnashif
authored andcommitted
runners: stm32cubeprogrammer: add support for --dev-id
Add support for the standard `--dev-id` argument used to select target ST-Link debug probe based on serial number. Note that this could already be achieved using custom argument `--conn-modifiers`. (`--dev-id <XXX>` is equivalent to `--conn-modifiers sn=<XXX>`) Signed-off-by: Mathieu Choplain <[email protected]>
1 parent 5f67dfd commit f1a75d7

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

scripts/west_commands/runners/stm32cubeprogrammer.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ def __init__(
3232
self,
3333
cfg: RunnerConfig,
3434
port: str,
35+
dev_id: str | None,
3536
frequency: int | None,
3637
reset_mode: str | None,
3738
download_address: int | None,
@@ -48,6 +49,7 @@ def __init__(
4849
super().__init__(cfg)
4950

5051
self._port = port
52+
self._dev_id = dev_id
5153
self._frequency = frequency
5254

5355
self._download_address = download_address
@@ -146,7 +148,7 @@ def name(cls):
146148

147149
@classmethod
148150
def capabilities(cls):
149-
return RunnerCaps(commands={"flash"}, erase=True, extload=True, tool_opt=True)
151+
return RunnerCaps(commands={"flash"}, dev_id=True, erase=True, extload=True, tool_opt=True)
150152

151153
@classmethod
152154
def do_add_parser(cls, parser):
@@ -230,6 +232,7 @@ def do_create(
230232
return STM32CubeProgrammerBinaryRunner(
231233
cfg,
232234
port=args.port,
235+
dev_id=args.dev_id,
233236
frequency=args.frequency,
234237
reset_mode=args.reset_mode,
235238
download_address=args.download_address,
@@ -262,6 +265,8 @@ def flash(self, **kwargs) -> None:
262265
connect_opts += f" reset={reset_mode}"
263266
if self._conn_modifiers:
264267
connect_opts += f" {self._conn_modifiers}"
268+
if self._dev_id:
269+
connect_opts += f" sn={self._dev_id}"
265270

266271
cmd += ["--connect", connect_opts]
267272
cmd += self._tool_opt

scripts/west_commands/tests/test_stm32cubeprogrammer.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
TEST_CASES = (
6363
{
6464
"port": "swd",
65+
"dev_id": None,
6566
"frequency": None,
6667
"reset_mode": None,
6768
"download_address": None,
@@ -89,6 +90,7 @@
8990
},
9091
{
9192
"port": "swd",
93+
"dev_id": None,
9294
"frequency": None,
9395
"reset_mode": None,
9496
"download_address": None,
@@ -117,6 +119,7 @@
117119
},
118120
{
119121
"port": "swd",
122+
"dev_id": None,
120123
"frequency": "4000",
121124
"reset_mode": None,
122125
"download_address": None,
@@ -144,6 +147,7 @@
144147
},
145148
{
146149
"port": "swd",
150+
"dev_id": None,
147151
"frequency": None,
148152
"reset_mode": "hw",
149153
"download_address": None,
@@ -171,6 +175,7 @@
171175
},
172176
{
173177
"port": "swd",
178+
"dev_id": None,
174179
"frequency": None,
175180
"reset_mode": "sw",
176181
"download_address": None,
@@ -198,6 +203,7 @@
198203
},
199204
{
200205
"port": "swd",
206+
"dev_id": None,
201207
"frequency": None,
202208
"reset_mode": "core",
203209
"download_address": None,
@@ -225,11 +231,12 @@
225231
},
226232
{
227233
"port": "swd",
234+
"dev_id": "TEST",
228235
"frequency": None,
229236
"reset_mode": None,
230237
"download_address": None,
231238
"start_address": None,
232-
"conn_modifiers": "br=115200 sn=TEST",
239+
"conn_modifiers": "br=115200",
233240
"start_modifiers": [],
234241
"download_modifiers": [],
235242
"cli": CLI_PATH,
@@ -252,6 +259,7 @@
252259
},
253260
{
254261
"port": "swd",
262+
"dev_id": None,
255263
"frequency": None,
256264
"reset_mode": None,
257265
"download_address": None,
@@ -279,6 +287,7 @@
279287
},
280288
{
281289
"port": "swd",
290+
"dev_id": None,
282291
"frequency": None,
283292
"reset_mode": None,
284293
"download_address": None,
@@ -307,6 +316,7 @@
307316
},
308317
{
309318
"port": "swd",
319+
"dev_id": None,
310320
"frequency": None,
311321
"reset_mode": None,
312322
"download_address": None,
@@ -335,6 +345,7 @@
335345
},
336346
{
337347
"port": "swd",
348+
"dev_id": None,
338349
"frequency": None,
339350
"reset_mode": None,
340351
"download_address": None,
@@ -362,6 +373,7 @@
362373
},
363374
{
364375
"port": "swd",
376+
"dev_id": None,
365377
"frequency": None,
366378
"reset_mode": None,
367379
"download_address": None,
@@ -389,6 +401,7 @@
389401
},
390402
{
391403
"port": "swd",
404+
"dev_id": None,
392405
"frequency": None,
393406
"reset_mode": None,
394407
"download_address": None,
@@ -416,6 +429,7 @@
416429
},
417430
{
418431
"port": "swd",
432+
"dev_id": None,
419433
"frequency": None,
420434
"reset_mode": None,
421435
"download_address": 0x80000000,
@@ -475,6 +489,7 @@ def test_stm32cubeprogrammer_init(
475489
runner = STM32CubeProgrammerBinaryRunner(
476490
cfg=runner_config,
477491
port=tc["port"],
492+
dev_id=tc["dev_id"],
478493
frequency=tc["frequency"],
479494
reset_mode=tc["reset_mode"],
480495
download_address=tc["download_address"],
@@ -514,6 +529,8 @@ def test_stm32cubeprogrammer_create(
514529
system.return_value = tc["system"]
515530

516531
args = ["--port", tc["port"]]
532+
if tc["dev_id"]:
533+
args.extend(["--dev-id", tc["dev_id"]])
517534
if tc["frequency"]:
518535
args.extend(["--frequency", tc["frequency"]])
519536
if tc["reset_mode"]:

0 commit comments

Comments
 (0)