123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- # Copyright (c) 2019, Nordic Semiconductor ASA
- #
- # SPDX-License-Identifier: Apache-2.0
- '''Catch-all module for miscellaneous devices which can't use a
- generic or widely used tool like J-Link, OpenOCD, etc.
- Please use this sparingly and only when your setup is exotic and
- you're willing to handle requests for help. E.g. if your "board" is a
- core on a special-purpose SoC which requires a complicated script to
- network boot.'''
- from runners.core import ZephyrBinaryRunner, RunnerCaps
- import argparse
- class MiscFlasher(ZephyrBinaryRunner):
- '''Runner for handling special purpose flashing commands.'''
- def __init__(self, cfg, cmd, args):
- super().__init__(cfg)
- if not cmd:
- # This is a board definition error, not a user error,
- # so we can do it now and not in do_run().
- raise ValueError('no command was given')
- self.cmd = cmd
- self.args = args
- @classmethod
- def name(cls):
- return 'misc-flasher'
- @classmethod
- def capabilities(cls):
- return RunnerCaps(commands={'flash'})
- @classmethod
- def do_add_parser(cls, parser):
- parser.add_argument('cmd',
- help='''command to run; it will be passed the
- build directory as its first argument''')
- parser.add_argument('args', nargs=argparse.REMAINDER,
- help='''additional arguments to pass after the build
- directory''')
- @classmethod
- def do_create(cls, cfg, args):
- return MiscFlasher(cfg, args.cmd, args.args)
- def do_run(self, *args, **kwargs):
- self.require(self.cmd)
- self.check_call([self.cmd, self.cfg.build_dir] + self.args)
|