| # Copyright (c) 2018 Open Source Foundries Limited. |
| # Copyright 2019 Foundries.io |
| # Copyright (c) 2020 Nordic Semiconductor ASA |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| '''west "debug", "debugserver", and "attach" commands.''' |
| |
| from textwrap import dedent |
| |
| from west.commands import WestCommand |
| |
| from run_common import add_parser_common, do_run_common |
| |
| |
| class Debug(WestCommand): |
| |
| def __init__(self): |
| super().__init__( |
| 'debug', |
| '', |
| description=dedent(''' |
| Connect to the board, flash the program, and start a |
| debugging session. Use "west attach" instead to attach |
| a debugger without reflashing.'''), |
| accepts_unknown_args=True) |
| self.runner_key = 'debug-runner' # in runners.yaml |
| |
| def do_add_parser(self, parser_adder): |
| return add_parser_common(self, parser_adder) |
| |
| def do_run(self, my_args, runner_args): |
| do_run_common(self, my_args, runner_args) |
| |
| |
| class DebugServer(WestCommand): |
| |
| def __init__(self): |
| super().__init__( |
| 'debugserver', |
| '', |
| description=dedent(''' |
| Connect to the board and launch a debug server which accepts |
| incoming connections for debugging the connected board. |
| |
| The debug server binds to a known port, and allows client software |
| started elsewhere to connect to it and debug the running |
| Zephyr image.'''), |
| accepts_unknown_args=True) |
| self.runner_key = 'debug-runner' # in runners.yaml |
| |
| def do_add_parser(self, parser_adder): |
| return add_parser_common(self, parser_adder) |
| |
| def do_run(self, my_args, runner_args): |
| do_run_common(self, my_args, runner_args) |
| |
| |
| class Attach(WestCommand): |
| |
| def __init__(self): |
| super().__init__( |
| 'attach', |
| '', |
| description="Like \"west debug\", but doesn't reflash the program.", |
| accepts_unknown_args=True) |
| self.runner_key = 'debug-runner' # in runners.yaml |
| |
| def do_add_parser(self, parser_adder): |
| return add_parser_common(self, parser_adder) |
| |
| def do_run(self, my_args, runner_args): |
| do_run_common(self, my_args, runner_args) |
| |
| |
| class Rtt(WestCommand): |
| |
| def __init__(self): |
| super().__init__( |
| 'rtt', |
| '', |
| description='open an rtt shell', |
| accepts_unknown_args=True) |
| self.runner_key = 'debug-runner' # in runners.yaml |
| |
| def do_add_parser(self, parser_adder): |
| return add_parser_common(self, parser_adder) |
| |
| def do_run(self, my_args, runner_args): |
| do_run_common(self, my_args, runner_args) |
| |
| |
| class Reset(WestCommand): |
| |
| def __init__(self): |
| super().__init__( |
| 'reset', |
| '', |
| description='reset the board to reboot', |
| accepts_unknown_args=True) |
| self.runner_key = 'debug-runner' # in runners.yaml |
| |
| def do_add_parser(self, parser_adder): |
| parser = add_parser_common(self, parser_adder) |
| parser.set_defaults(rebuild=False) |
| return parser |
| |
| def do_run(self, my_args, runner_args): |
| do_run_common(self, my_args, runner_args) |