Skip to content

Commit ccacaab

Browse files
Marti BolivarAnas Nashif
Marti Bolivar
authored and
Anas Nashif
committed
scripts: runner: pyocd: support DT-based flashing
Enable DT support in the pyOCD flasher, and turn it on in the build system. Signed-off-by: Marti Bolivar <[email protected]>
1 parent 1645d37 commit ccacaab

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

boards/common/pyocd.board.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
set_ifndef(BOARD_FLASH_RUNNER pyocd)
22
set_ifndef(BOARD_DEBUG_RUNNER pyocd)
3-
board_finalize_runner_args(pyocd) # No default arguments to provide.
3+
board_finalize_runner_args(pyocd "--dt-flash=y")

scripts/support/runner/pyocd.py

+14-4
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66

77
import os
88
import sys
9-
10-
from .core import ZephyrBinaryRunner
9+
from .core import ZephyrBinaryRunner, RunnerCaps, BuildConfiguration
1110

1211
DEFAULT_PYOCD_GDB_PORT = 3333
1312

1413

1514
class PyOcdBinaryRunner(ZephyrBinaryRunner):
1615
'''Runner front-end for pyOCD.'''
1716

18-
def __init__(self, target, flashtool='pyocd-flashtool',
17+
def __init__(self, target,
18+
flashtool='pyocd-flashtool', flash_addr=0x0,
1919
gdb=None, gdbserver='pyocd-gdbserver',
2020
gdb_port=DEFAULT_PYOCD_GDB_PORT, tui=False,
2121
bin_name=None, elf_name=None,
@@ -24,6 +24,7 @@ def __init__(self, target, flashtool='pyocd-flashtool',
2424

2525
self.target_args = ['-t', target]
2626
self.flashtool = flashtool
27+
self.flash_addr_args = ['-a', hex(flash_addr)] if flash_addr else []
2728
self.gdb_cmd = [gdb] if gdb is not None else None
2829
self.gdbserver = gdbserver
2930
self.gdb_port = gdb_port
@@ -45,6 +46,10 @@ def __init__(self, target, flashtool='pyocd-flashtool',
4546
def name(cls):
4647
return 'pyocd'
4748

49+
@classmethod
50+
def capabilities(cls):
51+
return RunnerCaps(flash_addr=True)
52+
4853
@classmethod
4954
def do_add_parser(cls, parser):
5055
parser.add_argument('--target', required=True,
@@ -77,8 +82,12 @@ def create_from_args(cls, args):
7782
file=sys.stderr)
7883
args.daparg = daparg
7984

85+
build_conf = BuildConfiguration(os.getcwd())
86+
flash_addr = cls.get_flash_address(args, build_conf)
87+
8088
return PyOcdBinaryRunner(
81-
args.target, flashtool=args.flashtool, gdb=args.gdb,
89+
args.target, flashtool=args.flashtool,
90+
flash_addr=flash_addr, gdb=args.gdb,
8291
gdbserver=args.gdbserver, gdb_port=args.gdb_port, tui=args.tui,
8392
bin_name=args.kernel_bin, elf_name=args.kernel_elf,
8493
board_id=args.board_id, daparg=args.daparg, debug=args.verbose)
@@ -97,6 +106,7 @@ def flash(self, **kwargs):
97106
raise ValueError('Cannot flash; bin_name is missing')
98107

99108
cmd = ([self.flashtool] +
109+
self.flash_addr_args +
100110
self.daparg_args +
101111
self.target_args +
102112
self.board_args +

0 commit comments

Comments
 (0)