Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 1 | # Copyright (c) 2018 Open Source Foundries Limited. |
| 2 | # Copyright 2019 Foundries.io |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 3 | # Copyright (c) 2020 Nordic Semiconductor ASA |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 4 | # |
| 5 | # SPDX-License-Identifier: Apache-2.0 |
| 6 | |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 7 | '''west "debug", "debugserver", and "attach" commands.''' |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 8 | |
| 9 | from textwrap import dedent |
| 10 | |
| 11 | from west.commands import WestCommand |
| 12 | |
Martí Bolívar | 6e4c2b9 | 2020-06-25 12:58:58 -0700 | [diff] [blame] | 13 | from run_common import add_parser_common, do_run_common |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 14 | |
| 15 | |
| 16 | class Debug(WestCommand): |
| 17 | |
| 18 | def __init__(self): |
| 19 | super(Debug, self).__init__( |
| 20 | 'debug', |
Marti Bolivar | 808028b | 2019-01-28 10:45:02 -0700 | [diff] [blame] | 21 | # Keep this in sync with the string in west-commands.yml. |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 22 | 'flash and interactively debug a Zephyr application', |
| 23 | dedent(''' |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 24 | Connect to the board, flash the program, and start a |
| 25 | debugging session. Use "west attach" instead to attach |
Martí Bolívar | 6e4c2b9 | 2020-06-25 12:58:58 -0700 | [diff] [blame] | 26 | a debugger without reflashing.'''), |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 27 | accepts_unknown_args=True) |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 28 | self.runner_key = 'debug-runner' # in runners.yaml |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 29 | |
| 30 | def do_add_parser(self, parser_adder): |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 31 | return add_parser_common(self, parser_adder) |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 32 | |
| 33 | def do_run(self, my_args, runner_args): |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 34 | do_run_common(self, my_args, runner_args) |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 35 | |
| 36 | |
| 37 | class DebugServer(WestCommand): |
| 38 | |
| 39 | def __init__(self): |
| 40 | super(DebugServer, self).__init__( |
| 41 | 'debugserver', |
Marti Bolivar | 808028b | 2019-01-28 10:45:02 -0700 | [diff] [blame] | 42 | # Keep this in sync with the string in west-commands.yml. |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 43 | 'connect to board and launch a debug server', |
| 44 | dedent(''' |
| 45 | Connect to the board and launch a debug server which accepts |
| 46 | incoming connections for debugging the connected board. |
| 47 | |
| 48 | The debug server binds to a known port, and allows client software |
| 49 | started elsewhere to connect to it and debug the running |
Martí Bolívar | 6e4c2b9 | 2020-06-25 12:58:58 -0700 | [diff] [blame] | 50 | Zephyr image.'''), |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 51 | accepts_unknown_args=True) |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 52 | self.runner_key = 'debug-runner' # in runners.yaml |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 53 | |
| 54 | def do_add_parser(self, parser_adder): |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 55 | return add_parser_common(self, parser_adder) |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 56 | |
| 57 | def do_run(self, my_args, runner_args): |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 58 | do_run_common(self, my_args, runner_args) |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 59 | |
Marti Bolivar | 808028b | 2019-01-28 10:45:02 -0700 | [diff] [blame] | 60 | |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 61 | class Attach(WestCommand): |
| 62 | |
| 63 | def __init__(self): |
| 64 | super(Attach, self).__init__( |
| 65 | 'attach', |
Marti Bolivar | 808028b | 2019-01-28 10:45:02 -0700 | [diff] [blame] | 66 | # Keep this in sync with the string in west-commands.yml. |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 67 | 'interactively debug a board', |
Martí Bolívar | 6e4c2b9 | 2020-06-25 12:58:58 -0700 | [diff] [blame] | 68 | "Like \"west debug\", but doesn't reflash the program.", |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 69 | accepts_unknown_args=True) |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 70 | self.runner_key = 'debug-runner' # in runners.yaml |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 71 | |
| 72 | def do_add_parser(self, parser_adder): |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 73 | return add_parser_common(self, parser_adder) |
Marti Bolivar | ab82264 | 2019-01-23 08:31:06 -0700 | [diff] [blame] | 74 | |
| 75 | def do_run(self, my_args, runner_args): |
Martí Bolívar | eb95bed | 2020-02-10 06:40:29 -0800 | [diff] [blame] | 76 | do_run_common(self, my_args, runner_args) |