zephyr/scripts/west_commands/runners/xsdb.py
Mubin Sayyed 16d5d5e480 west_commands: runners: Fix parameters passed to xsdb
Existing logic is passing elf file as parameter only when fsbl
or bit file parameter is present. This is incorrect, elf file should
be always passed irrespective of other parameters.

Signed-off-by: Mubin Sayyed <mubin.sayyed@amd.com>
2025-02-14 08:44:54 +01:00

58 lines
1.9 KiB
Python

# Copyright (c) 2024 Advanced Micro Devices, Inc.
#
# SPDX-License-Identifier: Apache-2.0
"""Runner for flashing with xsdb CLI, the official programming
utility from AMD platforms.
"""
import argparse
import os
from runners.core import RunnerCaps, RunnerConfig, ZephyrBinaryRunner
class XSDBBinaryRunner(ZephyrBinaryRunner):
def __init__(self, cfg: RunnerConfig, config=None, bitstream=None,
fsbl=None):
super().__init__(cfg)
self.elf_file = cfg.elf_file
if not config:
cfgfile_path = os.path.join(cfg.board_dir, 'support')
default = os.path.join(cfgfile_path, 'xsdb.cfg')
if os.path.exists(default):
config = default
self.xsdb_cfg_file = config
self.bitstream = bitstream
self.fsbl = fsbl
@classmethod
def name(cls):
return 'xsdb'
@classmethod
def capabilities(cls):
return RunnerCaps(flash_addr=True)
@classmethod
def do_add_parser(cls, parser):
parser.add_argument('--config', help='if given, override default config file')
parser.add_argument('--bitstream', help='path to the bitstream file')
parser.add_argument('--fsbl', help='path to the fsbl elf file')
@classmethod
def do_create(
cls, cfg: RunnerConfig, args: argparse.Namespace
) -> "XSDBBinaryRunner":
return XSDBBinaryRunner(cfg, config=args.config,
bitstream=args.bitstream, fsbl=args.fsbl)
def do_run(self, command, **kwargs):
if self.bitstream and self.fsbl:
cmd = ['xsdb', self.xsdb_cfg_file, self.elf_file, self.bitstream, self.fsbl]
elif self.bitstream:
cmd = ['xsdb', self.xsdb_cfg_file, self.elf_file, self.bitstream]
elif self.fsbl:
cmd = ['xsdb', self.xsdb_cfg_file, self.elf_file, self.fsbl]
else:
cmd = ['xsdb', self.xsdb_cfg_file, self.elf_file]
self.check_call(cmd)