@@ -36,6 +36,9 @@ def __init__(self, args):
36
36
if platform .system () == "Windows" :
37
37
self .jlink_cmd = "JLink"
38
38
39
+ # Obtain serial number if --jlink-serial-number argument provided
40
+ self .jlink_serial_number = getattr (self .args , "jlink_serial_number" )
41
+
39
42
# By default we assume that jlinkexe can be used to read any address on
40
43
# this board, so we set `address_maximum` to None. In some cases,
41
44
# however, particularly with external flash chips, jlinkexe may not be
@@ -196,6 +199,10 @@ def _run_jtag_commands(self, commands, binary, write=True):
196
199
jlink_file .name ,
197
200
)
198
201
202
+ # Append target selector if serial number provided.
203
+ if self .jlink_serial_number :
204
+ jlink_command += " -USB {}" .format (self .jlink_serial_number )
205
+
199
206
logging .debug ('Running "{}".' .format (jlink_command ))
200
207
201
208
def print_output (subp ):
@@ -456,9 +463,19 @@ def run_terminal(self):
456
463
return
457
464
458
465
logging .status ("Starting JLinkExe JTAG connection." )
466
+
467
+ # Include serial number specifier if `--jlin-serial-number` flag provided.
468
+ jlink_serial_number_str = ""
469
+ if self .jlink_serial_number :
470
+ jlink_serial_number_str = ("-USB {}" ).format (self .jlink_serial_number )
471
+
459
472
jtag_p = subprocess .Popen (
460
- "{} -device {} -if {} -speed {} -autoconnect 1 -jtagconf -1,-1" .format (
461
- self .jlink_cmd , self .jlink_device , self .jlink_if , self .jlink_speed
473
+ "{} -device {} -if {} -speed {} -autoconnect 1 {} --jtagconf -1,-1" .format (
474
+ self .jlink_cmd ,
475
+ self .jlink_device ,
476
+ self .jlink_if ,
477
+ self .jlink_speed ,
478
+ jlink_serial_number_str ,
462
479
).split (),
463
480
stdout = subprocess .PIPE ,
464
481
stderr = subprocess .PIPE ,
0 commit comments