runners: openocd: support --erase
Add support for the `--erase` option on `west flash`, for boards that specify at least one `--cmd-erase` option. Signed-off-by: Jordan Yates <jordan@embeint.com>
This commit is contained in:
parent
21ae5576a7
commit
ced3df6873
2 changed files with 28 additions and 7 deletions
|
@ -147,6 +147,10 @@ Build system and Infrastructure
|
|||
Twister XML reports have full testsuite name as ``testcase.classname property`` resolving
|
||||
possible duplicate testcase elements in ``twister_report.xml`` testsuite container.
|
||||
|
||||
* West
|
||||
|
||||
* Added support for the ``--erase`` option on the OpenOCD runner for boards which specify ``--cmd-erase``.
|
||||
|
||||
Drivers and Sensors
|
||||
*******************
|
||||
|
||||
|
|
|
@ -44,8 +44,8 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
|
|||
'''Runner front-end for openocd.'''
|
||||
|
||||
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,
|
||||
do_verify=False, do_verify_only=False,
|
||||
pre_load=None, erase_cmd=None, load_cmd=None, verify_cmd=None,
|
||||
post_verify=None, do_verify=False, do_verify_only=False, do_erase=False,
|
||||
tui=None, config=None, serial=None, use_elf=None,
|
||||
no_halt=False, no_init=False, no_targets=False,
|
||||
tcl_port=DEFAULT_OPENOCD_TCL_PORT,
|
||||
|
@ -93,11 +93,13 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
|
|||
self.pre_init = pre_init or []
|
||||
self.reset_halt_cmd = reset_halt_cmd
|
||||
self.pre_load = pre_load or []
|
||||
self.erase_cmd = erase_cmd
|
||||
self.load_cmd = load_cmd
|
||||
self.verify_cmd = verify_cmd
|
||||
self.post_verify = post_verify or []
|
||||
self.do_verify = do_verify or False
|
||||
self.do_verify_only = do_verify_only or False
|
||||
self.do_erase = do_erase or False
|
||||
self.tcl_port = tcl_port
|
||||
self.telnet_port = telnet_port
|
||||
self.gdb_port = gdb_port
|
||||
|
@ -120,7 +122,8 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
|
|||
|
||||
@classmethod
|
||||
def capabilities(cls):
|
||||
return RunnerCaps(commands={'flash', 'debug', 'debugserver', 'attach', 'rtt'}, rtt=True)
|
||||
return RunnerCaps(commands={'flash', 'debug', 'debugserver', 'attach', 'rtt'},
|
||||
rtt=True, erase=True)
|
||||
|
||||
@classmethod
|
||||
def do_add_parser(cls, parser):
|
||||
|
@ -142,6 +145,8 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
|
|||
parser.add_argument('--cmd-pre-load', action='append',
|
||||
help='''Command to run before flashing;
|
||||
may be given multiple times''')
|
||||
parser.add_argument('--cmd-erase', action='append',
|
||||
help='''Command to erase device; may be given multiple times''')
|
||||
parser.add_argument('--cmd-load',
|
||||
help='''Command to load/flash binary
|
||||
(required when flashing)''')
|
||||
|
@ -191,9 +196,9 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
|
|||
return OpenOcdBinaryRunner(
|
||||
cfg,
|
||||
pre_init=args.cmd_pre_init, reset_halt_cmd=args.cmd_reset_halt,
|
||||
pre_load=args.cmd_pre_load, load_cmd=args.cmd_load,
|
||||
pre_load=args.cmd_pre_load, erase_cmd=args.cmd_erase, load_cmd=args.cmd_load,
|
||||
verify_cmd=args.cmd_verify, post_verify=args.cmd_post_verify,
|
||||
do_verify=args.verify, do_verify_only=args.verify_only,
|
||||
do_verify=args.verify, do_verify_only=args.verify_only, do_erase=args.erase,
|
||||
tui=args.tui, config=args.config, serial=args.serial,
|
||||
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,
|
||||
|
@ -285,8 +290,20 @@ class OpenOcdBinaryRunner(ZephyrBinaryRunner):
|
|||
|
||||
load_image = []
|
||||
if not self.do_verify_only:
|
||||
load_image = ['-c', self.reset_halt_cmd,
|
||||
'-c', self.load_cmd + ' ' + hex_name]
|
||||
# Halt target
|
||||
load_image = ['-c', self.reset_halt_cmd]
|
||||
# Perform any erase operations
|
||||
if self.do_erase:
|
||||
if self.erase_cmd is None:
|
||||
self.logger.error('--erase not supported for target without --cmd-erase')
|
||||
return
|
||||
for erase_cmd in self.erase_cmd:
|
||||
load_image += ["-c", erase_cmd]
|
||||
# Trim the "erase" from "flash write_image erase" since a mass erase is already done
|
||||
if self.load_cmd.endswith(' erase'):
|
||||
self.load_cmd = self.load_cmd[:-6]
|
||||
# Load image
|
||||
load_image +=['-c', self.load_cmd + ' ' + hex_name]
|
||||
|
||||
verify_image = []
|
||||
if self.do_verify or self.do_verify_only:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue