Skip to content

Commit 2240f10

Browse files
mathieuchopstmnashif
authored andcommitted
scripts: runners: generalize --no-load argument
Move the existing "--no-load" argument from the OpenOCD and Intel Cyclone V runners into an argument in the runners base class such that it can be used by all runners. Also update the existing runners to work with the common option instead of their own. Signed-off-by: Mathieu Choplain <[email protected]>
1 parent bcb1813 commit 2240f10

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

scripts/west_commands/runners/core.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,10 @@ class RunnerCaps:
304304
305305
- rtt: whether the runner supports SEGGER RTT. This adds a --rtt-address
306306
option.
307+
308+
- skip_load: whether the runner supports the --load/--no-load option, which
309+
allows skipping the load of image on target before starting a debug session
310+
(this option only affects the 'debug' command)
307311
'''
308312

309313
commands: set[str] = field(default_factory=lambda: set(_RUNNERCAPS_COMMANDS))
@@ -319,6 +323,7 @@ class RunnerCaps:
319323
rtt: bool = False # This capability exists separately from the rtt command
320324
# to allow other commands to use the rtt address
321325
dry_run: bool = False
326+
skip_load: bool = False
322327

323328
def __post_init__(self):
324329
if self.mult_dev_ids and not self.dev_id:
@@ -640,6 +645,12 @@ def add_parser(cls, parser):
640645
help=('''Print all the commands without actually
641646
executing them''' if caps.dry_run else argparse.SUPPRESS))
642647

648+
# by default, 'west debug' is expected to flash before starting the session
649+
parser.add_argument('--load', action=argparse.BooleanOptionalAction,
650+
help=("load image on target before 'west debug' session"
651+
if caps.skip_load else argparse.SUPPRESS),
652+
default=True)
653+
643654
# Runner-specific options.
644655
cls.do_add_parser(parser)
645656

scripts/west_commands/runners/intel_cyclonev.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def __init__(self, cfg, pre_init=None, reset_halt_cmd=DEFAULT_OPENOCD_RESET_HALT
2828
tcl_port=DEFAULT_OPENOCD_TCL_PORT,
2929
telnet_port=DEFAULT_OPENOCD_TELNET_PORT,
3030
gdb_port=DEFAULT_OPENOCD_GDB_PORT,
31-
gdb_init=None, no_load=False):
31+
gdb_init=None, load=True):
3232
super().__init__(cfg)
3333

3434
support = path.join(cfg.board_dir, 'support')
@@ -89,7 +89,7 @@ def __init__(self, cfg, pre_init=None, reset_halt_cmd=DEFAULT_OPENOCD_RESET_HALT
8989
self.serial = ['-c set _ZEPHYR_BOARD_SERIAL ' + serial] if serial else []
9090
self.use_elf = use_elf
9191
self.gdb_init = gdb_init
92-
self.load_arg = [] if no_load else ['-ex', 'load']
92+
self.load_arg = ['-ex', 'load'] if load else []
9393

9494
@classmethod
9595
def name(cls):
@@ -98,7 +98,7 @@ def name(cls):
9898
@classmethod
9999
def capabilities(cls):
100100
return RunnerCaps(commands={'flash', 'debug', 'attach'},
101-
dev_id=False, flash_addr=False, erase=False)
101+
dev_id=False, flash_addr=False, erase=False, skip_load=True)
102102

103103
@classmethod
104104
def do_add_parser(cls, parser):
@@ -151,8 +151,6 @@ def do_add_parser(cls, parser):
151151
help='if given, no init issued in gdb server cmd')
152152
parser.add_argument('--no-targets', action='store_true',
153153
help='if given, no target issued in gdb server cmd')
154-
parser.add_argument('--no-load', action='store_true',
155-
help='if given, no load issued in gdb server cmd')
156154

157155
@classmethod
158156
def do_create(cls, cfg, args):
@@ -166,7 +164,7 @@ def do_create(cls, cfg, args):
166164
use_elf=args.use_elf, no_halt=args.no_halt, no_init=args.no_init,
167165
no_targets=args.no_targets, tcl_port=args.tcl_port,
168166
telnet_port=args.telnet_port, gdb_port=args.gdb_port,
169-
gdb_init=args.gdb_init, no_load=args.no_load)
167+
gdb_init=args.gdb_init, load=args.load)
170168

171169
def print_gdbserver_message(self):
172170
if not self.thread_info_enabled:

scripts/west_commands/runners/openocd.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def __init__(self, cfg, pre_init=None, reset_halt_cmd=DEFAULT_OPENOCD_RESET_HALT
5757
telnet_port=DEFAULT_OPENOCD_TELNET_PORT,
5858
gdb_port=DEFAULT_OPENOCD_GDB_PORT,
5959
gdb_client_port=DEFAULT_OPENOCD_GDB_PORT,
60-
gdb_init=None, no_load=False,
60+
gdb_init=None, load=True,
6161
target_handle=DEFAULT_OPENOCD_TARGET_HANDLE,
6262
rtt_port=DEFAULT_OPENOCD_RTT_PORT, rtt_server=False):
6363
super().__init__(cfg)
@@ -118,7 +118,7 @@ def __init__(self, cfg, pre_init=None, reset_halt_cmd=DEFAULT_OPENOCD_RESET_HALT
118118
self.serial = ['-c set _ZEPHYR_BOARD_SERIAL ' + serial] if serial else []
119119
self.use_elf = use_elf
120120
self.gdb_init = gdb_init
121-
self.load_arg = [] if no_load else ['-ex', 'load']
121+
self.load_arg = ['-ex', 'load'] if load else []
122122
self.target_handle = target_handle
123123
self.rtt_port = rtt_port
124124
self.rtt_server = rtt_server
@@ -130,7 +130,7 @@ def name(cls):
130130
@classmethod
131131
def capabilities(cls):
132132
return RunnerCaps(commands={'flash', 'debug', 'debugserver', 'attach', 'rtt'},
133-
rtt=True, erase=True)
133+
rtt=True, erase=True, skip_load=True)
134134

135135
@classmethod
136136
def do_add_parser(cls, parser):
@@ -188,8 +188,6 @@ def do_add_parser(cls, parser):
188188
help='if given, no init issued in gdb server cmd')
189189
parser.add_argument('--no-targets', action='store_true',
190190
help='if given, no target issued in gdb server cmd')
191-
parser.add_argument('--no-load', action='store_true',
192-
help='if given, no load issued in gdb server cmd')
193191
parser.add_argument('--target-handle', default=DEFAULT_OPENOCD_TARGET_HANDLE,
194192
help=f'''Internal handle used in openocd targets cfg
195193
files, defaults to "{DEFAULT_OPENOCD_TARGET_HANDLE}".
@@ -215,7 +213,7 @@ def do_create(cls, cfg, args):
215213
no_targets=args.no_targets, tcl_port=args.tcl_port,
216214
telnet_port=args.telnet_port, gdb_port=args.gdb_port,
217215
gdb_client_port=args.gdb_client_port, gdb_init=args.gdb_init,
218-
no_load=args.no_load, target_handle=args.target_handle,
216+
load=args.load, target_handle=args.target_handle,
219217
rtt_port=args.rtt_port, rtt_server=args.rtt_server)
220218

221219
def print_gdbserver_message(self):

0 commit comments

Comments
 (0)