Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions scripts/west_commands/runners/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,10 @@ class RunnerCaps:

- rtt: whether the runner supports SEGGER RTT. This adds a --rtt-address
option.

- skip_load: whether the runner supports the --load/--no-load option, which
allows skipping the load of image on target before starting a debug session
(this option only affects the 'debug' command)
'''

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

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

# by default, 'west debug' is expected to flash before starting the session
parser.add_argument('--load', action=argparse.BooleanOptionalAction,
help=("load image on target before 'west debug' session"
if caps.skip_load else argparse.SUPPRESS),
default=True)

# Runner-specific options.
cls.do_add_parser(parser)

Expand Down
10 changes: 4 additions & 6 deletions scripts/west_commands/runners/intel_cyclonev.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def __init__(self, cfg, pre_init=None, reset_halt_cmd=DEFAULT_OPENOCD_RESET_HALT
tcl_port=DEFAULT_OPENOCD_TCL_PORT,
telnet_port=DEFAULT_OPENOCD_TELNET_PORT,
gdb_port=DEFAULT_OPENOCD_GDB_PORT,
gdb_init=None, no_load=False):
gdb_init=None, load=True):
super().__init__(cfg)

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

@classmethod
def name(cls):
Expand All @@ -98,7 +98,7 @@ def name(cls):
@classmethod
def capabilities(cls):
return RunnerCaps(commands={'flash', 'debug', 'attach'},
dev_id=False, flash_addr=False, erase=False)
dev_id=False, flash_addr=False, erase=False, skip_load=True)

@classmethod
def do_add_parser(cls, parser):
Expand Down Expand Up @@ -151,8 +151,6 @@ def do_add_parser(cls, parser):
help='if given, no init issued in gdb server cmd')
parser.add_argument('--no-targets', action='store_true',
help='if given, no target issued in gdb server cmd')
parser.add_argument('--no-load', action='store_true',
help='if given, no load issued in gdb server cmd')

@classmethod
def do_create(cls, cfg, args):
Expand All @@ -166,7 +164,7 @@ def do_create(cls, cfg, args):
use_elf=args.use_elf, no_halt=args.no_halt, no_init=args.no_init,
no_targets=args.no_targets, tcl_port=args.tcl_port,
telnet_port=args.telnet_port, gdb_port=args.gdb_port,
gdb_init=args.gdb_init, no_load=args.no_load)
gdb_init=args.gdb_init, load=args.load)

def print_gdbserver_message(self):
if not self.thread_info_enabled:
Expand Down
10 changes: 4 additions & 6 deletions scripts/west_commands/runners/openocd.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def __init__(self, cfg, pre_init=None, reset_halt_cmd=DEFAULT_OPENOCD_RESET_HALT
telnet_port=DEFAULT_OPENOCD_TELNET_PORT,
gdb_port=DEFAULT_OPENOCD_GDB_PORT,
gdb_client_port=DEFAULT_OPENOCD_GDB_PORT,
gdb_init=None, no_load=False,
gdb_init=None, load=True,
target_handle=DEFAULT_OPENOCD_TARGET_HANDLE,
rtt_port=DEFAULT_OPENOCD_RTT_PORT, rtt_server=False):
super().__init__(cfg)
Expand Down Expand Up @@ -118,7 +118,7 @@ def __init__(self, cfg, pre_init=None, reset_halt_cmd=DEFAULT_OPENOCD_RESET_HALT
self.serial = ['-c set _ZEPHYR_BOARD_SERIAL ' + serial] if serial else []
self.use_elf = use_elf
self.gdb_init = gdb_init
self.load_arg = [] if no_load else ['-ex', 'load']
self.load_arg = ['-ex', 'load'] if load else []
self.target_handle = target_handle
self.rtt_port = rtt_port
self.rtt_server = rtt_server
Expand All @@ -130,7 +130,7 @@ def name(cls):
@classmethod
def capabilities(cls):
return RunnerCaps(commands={'flash', 'debug', 'debugserver', 'attach', 'rtt'},
rtt=True, erase=True)
rtt=True, erase=True, skip_load=True)

@classmethod
def do_add_parser(cls, parser):
Expand Down Expand Up @@ -188,8 +188,6 @@ def do_add_parser(cls, parser):
help='if given, no init issued in gdb server cmd')
parser.add_argument('--no-targets', action='store_true',
help='if given, no target issued in gdb server cmd')
parser.add_argument('--no-load', action='store_true',
help='if given, no load issued in gdb server cmd')
parser.add_argument('--target-handle', default=DEFAULT_OPENOCD_TARGET_HANDLE,
help=f'''Internal handle used in openocd targets cfg
files, defaults to "{DEFAULT_OPENOCD_TARGET_HANDLE}".
Expand All @@ -215,7 +213,7 @@ def do_create(cls, cfg, args):
no_targets=args.no_targets, tcl_port=args.tcl_port,
telnet_port=args.telnet_port, gdb_port=args.gdb_port,
gdb_client_port=args.gdb_client_port, gdb_init=args.gdb_init,
no_load=args.no_load, target_handle=args.target_handle,
load=args.load, target_handle=args.target_handle,
rtt_port=args.rtt_port, rtt_server=args.rtt_server)

def print_gdbserver_message(self):
Expand Down
10 changes: 8 additions & 2 deletions scripts/west_commands/runners/stlink_gdbserver.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,9 @@ def name(cls) -> str:

@classmethod
def capabilities(cls) -> RunnerCaps:
return RunnerCaps(commands={"attach", "debug", "debugserver"}, dev_id=True, extload=True)
return RunnerCaps(
commands={"attach", "debug", "debugserver"}, dev_id=True, extload=True, skip_load=True
)

@classmethod
def extload_help(cls) -> str:
Expand Down Expand Up @@ -128,6 +130,7 @@ def do_create(cls, cfg: RunnerConfig, args: argparse.Namespace) -> "STLinkGDBSer
args.port_number,
args.extload,
args.external_init,
args.load,
)

def __init__(
Expand All @@ -139,6 +142,7 @@ def __init__(
gdb_port: int,
external_loader: str | None,
external_init: bool,
load: bool,
):
super().__init__(cfg)
self.ensure_output('elf')
Expand All @@ -149,6 +153,7 @@ def __init__(
self._ap_id = ap_id
self._external_loader = external_loader
self._do_external_init = external_init
self._load = load

def do_run(self, command: str, **kwargs):
if command in ["attach", "debug", "debugserver"]:
Expand Down Expand Up @@ -181,7 +186,8 @@ def do_attach_debug_debugserver(self, command: str):
gdbserver_cmd += ["--attach"]
else: # debug/debugserver
gdbserver_cmd += ["--initialize-reset"]
gdb_args += ["-ex", f"load {elf_path}"]
if self._load:
gdb_args += ["-ex", f"load {elf_path}"]

if self._stlink_serial:
gdbserver_cmd += ["--serial-number", self._stlink_serial]
Expand Down
Loading