scripts: west: runner: openocd: Add gdb-client-port

The gdb-port defines the GDB port and the openocd runner passes
this value to openocd as well as gdb. However, the TI AM62x board
provides multiple ports for each subsystem. For example, systick
appears at 3333, A53 as 3334-3337, R5F as 3338 and M4F as 3339.

If we want to connect to the M4F, we need to add another port which
is different to the to the gdb-port value.

This patch adds an additional argument --gdb-client-port to define
the port which GDB should connect to. It defaults to 3333, identical
to gdb-port.

Signed-off-by: Daniel Schultz <d.schultz@phytec.de>
This commit is contained in:
Daniel Schultz 2024-04-11 16:12:57 -07:00 committed by Anas Nashif
parent f73471eaf9
commit b22c961e5e
1 changed files with 8 additions and 3 deletions

View File

@ -37,6 +37,7 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
tcl_port=DEFAULT_OPENOCD_TCL_PORT,
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,
target_handle=DEFAULT_OPENOCD_TARGET_HANDLE):
super().__init__(cfg)
@ -85,6 +86,7 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
self.tcl_port = tcl_port
self.telnet_port = telnet_port
self.gdb_port = gdb_port
self.gdb_client_port = gdb_client_port
self.gdb_cmd = [cfg.gdb] if cfg.gdb else None
self.tui_arg = ['-tui'] if tui else []
self.halt_arg = [] if no_halt else ['-c halt']
@ -146,6 +148,9 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
help='openocd telnet port, defaults to 4444')
parser.add_argument('--gdb-port', default=DEFAULT_OPENOCD_GDB_PORT,
help='openocd gdb port, defaults to 3333')
parser.add_argument('--gdb-client-port', default=DEFAULT_OPENOCD_GDB_PORT,
help='''openocd gdb client port if multiple ports come
up, defaults to 3333''')
parser.add_argument('--gdb-init', action='append',
help='if given, add GDB init commands')
parser.add_argument('--no-halt', action='store_true',
@ -174,8 +179,8 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
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,
target_handle=args.target_handle)
gdb_client_port=args.gdb_client_port, gdb_init=args.gdb_init,
no_load=args.no_load, target_handle=args.target_handle)
def print_gdbserver_message(self):
if not self.thread_info_enabled:
@ -351,7 +356,7 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
pre_init_cmd + self.init_arg + self.targets_arg +
self.halt_arg)
gdb_cmd = (self.gdb_cmd + self.tui_arg +
['-ex', 'target extended-remote :{}'.format(self.gdb_port),
['-ex', 'target extended-remote :{}'.format(self.gdb_client_port),
self.elf_name])
if command == 'debug':
gdb_cmd.extend(self.load_arg)