6
6
7
7
import os
8
8
import sys
9
-
10
- from .core import ZephyrBinaryRunner
9
+ from .core import ZephyrBinaryRunner , RunnerCaps , BuildConfiguration
11
10
12
11
DEFAULT_PYOCD_GDB_PORT = 3333
13
12
14
13
15
14
class PyOcdBinaryRunner (ZephyrBinaryRunner ):
16
15
'''Runner front-end for pyOCD.'''
17
16
18
- def __init__ (self , target , flashtool = 'pyocd-flashtool' ,
17
+ def __init__ (self , target ,
18
+ flashtool = 'pyocd-flashtool' , flash_addr = 0x0 ,
19
19
gdb = None , gdbserver = 'pyocd-gdbserver' ,
20
20
gdb_port = DEFAULT_PYOCD_GDB_PORT , tui = False ,
21
21
bin_name = None , elf_name = None ,
@@ -24,6 +24,7 @@ def __init__(self, target, flashtool='pyocd-flashtool',
24
24
25
25
self .target_args = ['-t' , target ]
26
26
self .flashtool = flashtool
27
+ self .flash_addr_args = ['-a' , hex (flash_addr )] if flash_addr else []
27
28
self .gdb_cmd = [gdb ] if gdb is not None else None
28
29
self .gdbserver = gdbserver
29
30
self .gdb_port = gdb_port
@@ -45,6 +46,10 @@ def __init__(self, target, flashtool='pyocd-flashtool',
45
46
def name (cls ):
46
47
return 'pyocd'
47
48
49
+ @classmethod
50
+ def capabilities (cls ):
51
+ return RunnerCaps (flash_addr = True )
52
+
48
53
@classmethod
49
54
def do_add_parser (cls , parser ):
50
55
parser .add_argument ('--target' , required = True ,
@@ -77,8 +82,12 @@ def create_from_args(cls, args):
77
82
file = sys .stderr )
78
83
args .daparg = daparg
79
84
85
+ build_conf = BuildConfiguration (os .getcwd ())
86
+ flash_addr = cls .get_flash_address (args , build_conf )
87
+
80
88
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 ,
82
91
gdbserver = args .gdbserver , gdb_port = args .gdb_port , tui = args .tui ,
83
92
bin_name = args .kernel_bin , elf_name = args .kernel_elf ,
84
93
board_id = args .board_id , daparg = args .daparg , debug = args .verbose )
@@ -97,6 +106,7 @@ def flash(self, **kwargs):
97
106
raise ValueError ('Cannot flash; bin_name is missing' )
98
107
99
108
cmd = ([self .flashtool ] +
109
+ self .flash_addr_args +
100
110
self .daparg_args +
101
111
self .target_args +
102
112
self .board_args +
0 commit comments