scripts: bossac: Support flashing at an offset.

The Adafruit SAMD51 boards use a combined BOSSA / U2F bootloader that
resides in the first 16 KiB.  Add support for pulling the application
partition offset from the configuration and using that to offset where
the binary gets flashed.

Signed-off-by: Michael Hope <mlhx@google.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Michael Hope 2018-07-08 21:28:53 +02:00 committed by Anas Nashif
commit bde3224c91

View file

@ -4,9 +4,10 @@
'''bossac-specific runner (flash only) for Atmel SAM microcontrollers.'''
import os
import platform
from runners.core import ZephyrBinaryRunner, RunnerCaps
from runners.core import ZephyrBinaryRunner, RunnerCaps, BuildConfiguration
DEFAULT_BOSSAC_PORT = '/dev/ttyACM0'
@ -14,10 +15,12 @@ DEFAULT_BOSSAC_PORT = '/dev/ttyACM0'
class BossacBinaryRunner(ZephyrBinaryRunner):
'''Runner front-end for bossac.'''
def __init__(self, cfg, bossac='bossac', port=DEFAULT_BOSSAC_PORT):
def __init__(self, cfg, bossac='bossac', port=DEFAULT_BOSSAC_PORT,
offset=0):
super(BossacBinaryRunner, self).__init__(cfg)
self.bossac = bossac
self.port = port
self.offset = offset
@classmethod
def name(cls):
@ -31,13 +34,17 @@ class BossacBinaryRunner(ZephyrBinaryRunner):
def do_add_parser(cls, parser):
parser.add_argument('--bossac', default='bossac',
help='path to bossac, default is bossac')
parser.add_argument('--offset', default=0,
help='start erase/write/read/verify operation '
'at flash OFFSET; OFFSET must be aligned '
' to a flash page boundary')
parser.add_argument('--bossac-port', default='/dev/ttyACM0',
help='serial port to use, default is /dev/ttyACM0')
@classmethod
def create(cls, cfg, args):
return BossacBinaryRunner(cfg, bossac=args.bossac,
port=args.bossac_port)
port=args.bossac_port, offset=args.offset)
def do_run(self, command, **kwargs):
if platform.system() != 'Linux':
@ -48,6 +55,7 @@ class BossacBinaryRunner(ZephyrBinaryRunner):
'ospeed', '1200', 'cs8', '-cstopb', 'ignpar', 'eol', '255',
'eof', '255']
cmd_flash = [self.bossac, '-p', self.port, '-R', '-e', '-w', '-v',
'-o', '%s' % self.offset,
'-b', self.cfg.bin_file]
self.check_call(cmd_stty)