| # Copyright (c) 2022 Renesas Electronics Corporation |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| '''Runner for flashing with ezFlashCLI.''' |
| from runners.core import ZephyrBinaryRunner, RunnerCaps |
| |
| DEFAULT_EZFLASHCLI = "ezFlashCLI" |
| |
| class EzFlashCliBinaryRunner(ZephyrBinaryRunner): |
| '''Runner front-end for ezFlashCLI''' |
| |
| def __init__(self, cfg, tool, sn, erase=False): |
| super().__init__(cfg) |
| self.bin_ = cfg.bin_file |
| |
| self.tool = tool |
| self.sn_arg = ['-j', f'{sn}'] if sn is not None else [] |
| self.erase = bool(erase) |
| |
| @classmethod |
| def name(cls): |
| return 'ezflashcli' |
| |
| @classmethod |
| def capabilities(cls): |
| return RunnerCaps(commands={'flash'}, erase=True) |
| |
| @classmethod |
| def do_add_parser(cls, parser): |
| parser.add_argument('--tool', default=DEFAULT_EZFLASHCLI, |
| help='ezFlashCLI path, default is ' |
| f'{DEFAULT_EZFLASHCLI}') |
| parser.add_argument('--sn', default=None, required=False, |
| help='J-Link probe serial number') |
| |
| @classmethod |
| def do_create(cls, cfg, args): |
| return EzFlashCliBinaryRunner(cfg, tool=args.tool, sn=args.sn, |
| erase=args.erase) |
| |
| def program_bin(self): |
| if self.erase: |
| self.logger.info("Erasing flash...") |
| self.check_call([self.tool] + self.sn_arg + ["erase_flash"]) |
| |
| self.logger.info(f"Flashing {self.bin_}...") |
| self.check_call([self.tool] + self.sn_arg + ["image_flash", self.bin_]) |
| |
| def reset(self): |
| self.logger.info("Resetting...") |
| self.check_call([self.tool] + self.sn_arg + ["go"]) |
| |
| def do_run(self, command, **kwargs): |
| self.require(self.tool) |
| self.ensure_output('bin') |
| self.program_bin() |
| self.reset() |