Browse Source

openocd: add hardcoded configs as input parameters

Debugging ESP32 SoCs is not possible if the commands
halt, target and load are enabled by default.
This MR allows this configs to be used as input parameters.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
pull/39285/head
Sylvio Alves 4 years ago committed by Carles Cufí
parent
commit
49bcc08033
  1. 50
      scripts/west_commands/runners/openocd.py

50
scripts/west_commands/runners/openocd.py

@ -28,10 +28,11 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
def __init__(self, cfg, pre_init=None, reset_halt_cmd=DEFAULT_OPENOCD_RESET_HALT_CMD, def __init__(self, cfg, pre_init=None, reset_halt_cmd=DEFAULT_OPENOCD_RESET_HALT_CMD,
pre_load=None, load_cmd=None, verify_cmd=None, post_verify=None, pre_load=None, load_cmd=None, verify_cmd=None, post_verify=None,
tui=None, config=None, serial=None, use_elf=None, tui=None, config=None, serial=None, use_elf=None,
no_halt=False, no_halt=False, no_init=False, no_targets=False,
tcl_port=DEFAULT_OPENOCD_TCL_PORT, tcl_port=DEFAULT_OPENOCD_TCL_PORT,
telnet_port=DEFAULT_OPENOCD_TELNET_PORT, telnet_port=DEFAULT_OPENOCD_TELNET_PORT,
gdb_port=DEFAULT_OPENOCD_GDB_PORT): gdb_port=DEFAULT_OPENOCD_GDB_PORT,
gdb_init=None, no_load=False):
super().__init__(cfg) super().__init__(cfg)
if not config: if not config:
@ -66,8 +67,12 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
self.gdb_cmd = [cfg.gdb] if cfg.gdb else None self.gdb_cmd = [cfg.gdb] if cfg.gdb else None
self.tui_arg = ['-tui'] if tui else [] self.tui_arg = ['-tui'] if tui else []
self.halt_arg = [] if no_halt else ['-c halt'] self.halt_arg = [] if no_halt else ['-c halt']
self.init_arg = [] if no_init else ['-c init']
self.targets_arg = [] if no_targets else ['-c targets']
self.serial = ['-c set _ZEPHYR_BOARD_SERIAL ' + serial] if serial else [] self.serial = ['-c set _ZEPHYR_BOARD_SERIAL ' + serial] if serial else []
self.use_elf = use_elf self.use_elf = use_elf
self.gdb_init = gdb_init
self.load_arg = [] if no_load else ['-ex', 'load']
@classmethod @classmethod
def name(cls): def name(cls):
@ -111,8 +116,16 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
help='openocd telnet port, defaults to 4444') help='openocd telnet port, defaults to 4444')
parser.add_argument('--gdb-port', default=DEFAULT_OPENOCD_GDB_PORT, parser.add_argument('--gdb-port', default=DEFAULT_OPENOCD_GDB_PORT,
help='openocd gdb port, defaults to 3333') help='openocd gdb port, 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', parser.add_argument('--no-halt', action='store_true',
help='if given, no halt issued in gdb server cmd') help='if given, no halt issued in gdb server cmd')
parser.add_argument('--no-init', action='store_true',
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 @classmethod
def do_create(cls, cfg, args): def do_create(cls, cfg, args):
@ -122,9 +135,10 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
pre_load=args.cmd_pre_load, load_cmd=args.cmd_load, pre_load=args.cmd_pre_load, load_cmd=args.cmd_load,
verify_cmd=args.cmd_verify, post_verify=args.cmd_post_verify, verify_cmd=args.cmd_verify, post_verify=args.cmd_post_verify,
tui=args.tui, config=args.config, serial=args.serial, tui=args.tui, config=args.config, serial=args.serial,
use_elf=args.use_elf, no_halt=args.no_halt, use_elf=args.use_elf, no_halt=args.no_halt, no_init=args.no_init,
tcl_port=args.tcl_port, telnet_port=args.telnet_port, no_targets=args.no_targets, tcl_port=args.tcl_port,
gdb_port=args.gdb_port) telnet_port=args.telnet_port, gdb_port=args.gdb_port,
gdb_init=args.gdb_init, no_load=args.no_load)
def print_gdbserver_message(self): def print_gdbserver_message(self):
if not self.thread_info_enabled: if not self.thread_info_enabled:
@ -217,8 +231,7 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
post_verify_cmd.append(i) post_verify_cmd.append(i)
cmd = (self.openocd_cmd + self.serial + self.cfg_cmd + cmd = (self.openocd_cmd + self.serial + self.cfg_cmd +
pre_init_cmd + ['-c', 'init', pre_init_cmd + self.init_arg + self.targets_arg +
'-c', 'targets'] +
pre_load_cmd + ['-c', self.reset_halt_cmd, pre_load_cmd + ['-c', self.reset_halt_cmd,
'-c', self.load_cmd + ' ' + hex_name, '-c', self.load_cmd + ' ' + hex_name,
'-c', self.reset_halt_cmd] + '-c', self.reset_halt_cmd] +
@ -243,9 +256,8 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
pre_init_cmd.append(i) pre_init_cmd.append(i)
cmd = (self.openocd_cmd + self.serial + self.cfg_cmd + cmd = (self.openocd_cmd + self.serial + self.cfg_cmd +
pre_init_cmd + ['-c', 'init', pre_init_cmd + self.init_arg + self.targets_arg +
'-c', 'targets', ['-c', self.reset_halt_cmd,
'-c', self.reset_halt_cmd,
'-c', 'load_image ' + self.elf_name, '-c', 'load_image ' + self.elf_name,
'-c', 'resume ' + ep_addr, '-c', 'resume ' + ep_addr,
'-c', 'shutdown']) '-c', 'shutdown'])
@ -266,17 +278,22 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
pre_init_cmd.append("-c") pre_init_cmd.append("-c")
pre_init_cmd.append("$_TARGETNAME configure -rtos Zephyr") pre_init_cmd.append("$_TARGETNAME configure -rtos Zephyr")
server_cmd = (self.openocd_cmd + self.serial + self.cfg_cmd + server_cmd = (self.openocd_cmd + self.serial +
['-c', 'tcl_port {}'.format(self.tcl_port), ['-c', 'tcl_port {}'.format(self.tcl_port),
'-c', 'telnet_port {}'.format(self.telnet_port), '-c', 'telnet_port {}'.format(self.telnet_port),
'-c', 'gdb_port {}'.format(self.gdb_port)] + '-c', 'gdb_port {}'.format(self.gdb_port)] +
pre_init_cmd + ['-c', 'init', '-c', 'targets'] + pre_init_cmd + self.init_arg + self.targets_arg +
self.halt_arg) self.halt_arg + self.cfg_cmd)
gdb_cmd = (self.gdb_cmd + self.tui_arg + gdb_cmd = (self.gdb_cmd + self.tui_arg +
['-ex', 'target remote :{}'.format(self.gdb_port), ['-ex', 'target remote :{}'.format(self.gdb_port),
self.elf_name]) self.elf_name])
if command == 'debug': if command == 'debug':
gdb_cmd.extend(['-ex', 'load']) gdb_cmd.extend(self.load_arg)
for i in self.gdb_init:
gdb_cmd.append("-ex")
gdb_cmd.append(i)
self.require(gdb_cmd[0]) self.require(gdb_cmd[0])
self.print_gdbserver_message() self.print_gdbserver_message()
self.run_server_and_client(server_cmd, gdb_cmd) self.run_server_and_client(server_cmd, gdb_cmd)
@ -291,8 +308,7 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
['-c', 'tcl_port {}'.format(self.tcl_port), ['-c', 'tcl_port {}'.format(self.tcl_port),
'-c', 'telnet_port {}'.format(self.telnet_port), '-c', 'telnet_port {}'.format(self.telnet_port),
'-c', 'gdb_port {}'.format(self.gdb_port)] + '-c', 'gdb_port {}'.format(self.gdb_port)] +
pre_init_cmd + ['-c', 'init', pre_init_cmd + self.init_arg + self.targets_arg +
'-c', 'targets', ['-c', self.reset_halt_cmd])
'-c', self.reset_halt_cmd])
self.print_gdbserver_message() self.print_gdbserver_message()
self.check_call(cmd) self.check_call(cmd)

Loading…
Cancel
Save