Skip to content

Commit d5ebbf5

Browse files
author
Marti Bolivar
committed
scripts: runner: nrfjprog: don't do full erase by default
By default, use a sector erase to flash boards with nrfjprog.py. To allow getting the old behavior, add an --erase flag that works the exact same way as the corresponding jlink.py argument: if present, a full flash erase is done before programming. If absent, only a sector erase is done. Fixes zephyrproject-rtos#6147 Signed-off-by: Marti Bolivar <[email protected]> Signed-off-by: Carles Cufi <[email protected]>
1 parent bdc5c72 commit d5ebbf5

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

scripts/support/runner/nrfjprog.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@
1212
class NrfJprogBinaryRunner(ZephyrBinaryRunner):
1313
'''Runner front-end for nrfjprog.'''
1414

15-
def __init__(self, hex_, family, softreset, debug=False):
15+
def __init__(self, hex_, family, softreset, erase=False, debug=False):
1616
super(NrfJprogBinaryRunner, self).__init__(debug=debug)
1717
self.hex_ = hex_
1818
self.family = family
1919
self.softreset = softreset
20+
self.erase = erase
2021

2122
@classmethod
2223
def name(cls):
@@ -34,11 +35,14 @@ def do_add_parser(cls, parser):
3435
parser.add_argument('--softreset', required=False,
3536
action='store_true',
3637
help='use reset instead of pinreset')
38+
parser.add_argument('--erase', action='store_true',
39+
help='if given, mass erase flash before loading')
3740

3841
@classmethod
3942
def create_from_args(cls, args):
4043
return NrfJprogBinaryRunner(args.kernel_hex, args.nrf_family,
41-
args.softreset, debug=args.verbose)
44+
args.softreset, erase=args.erase,
45+
debug=args.verbose)
4246

4347
def get_board_snr_from_user(self):
4448
snrs = self.check_output(['nrfjprog', '--ids'])
@@ -70,14 +74,25 @@ def get_board_snr_from_user(self):
7074
return snrs[value - 1]
7175

7276
def do_run(self, command, **kwargs):
77+
commands = []
7378
board_snr = self.get_board_snr_from_user()
79+
program_cmd = ['nrfjprog', '--program', self.hex_, '-f', self.family,
80+
'--snr', board_snr]
7481

7582
print('Flashing file: {}'.format(self.hex_))
76-
commands = [
77-
['nrfjprog', '--eraseall', '-f', self.family, '--snr', board_snr],
78-
['nrfjprog', '--program', self.hex_, '-f', self.family, '--snr',
79-
board_snr],
80-
]
83+
84+
if self.erase:
85+
commands.extend([
86+
['nrfjprog', '--eraseall', '-f', self.family,
87+
'--snr', board_snr],
88+
program_cmd
89+
])
90+
else:
91+
if self.family == 'NRF51':
92+
commands.append(program_cmd + ['--sectorerase'])
93+
else:
94+
commands.append(program_cmd + ['--sectoranduicrerase'])
95+
8196
if self.family == 'NRF52' and self.softreset == False:
8297
commands.extend([
8398
# Enable pin reset

0 commit comments

Comments
 (0)