zephyr/scripts/west_commands/runners/__init__.py
Yangbo Lu e960af1cb1 scripts: west_commands: runners: add nxp spsdk
Added nxp spsdk as west runner.

Secure Provisioning SDK (SPSDK) is a unified, reliable,
and easy to use Python SDK library working across the
NXP MCU portfolio providing a strong foundation from
quick customer prototyping up to production deployment.

Docs: https://spsdk.readthedocs.io

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
2025-06-11 16:03:37 -07:00

83 lines
2 KiB
Python

# Copyright (c) 2017 Linaro Limited.
#
# SPDX-License-Identifier: Apache-2.0
import importlib
import logging
from runners.core import MissingProgram, ZephyrBinaryRunner
_logger = logging.getLogger('runners')
def _import_runner_module(runner_name):
try:
importlib.import_module(f'runners.{runner_name}')
except ImportError as ie:
# Runners are supposed to gracefully handle failures when they
# import anything outside of stdlib, but they sometimes do
# not. Catch ImportError to handle this.
_logger.warning(f'The module for runner "{runner_name}" '
f'could not be imported ({ie}). This most likely '
'means it is not handling its dependencies properly. '
'Please report this to the zephyr developers.')
# We import these here to ensure the ZephyrBinaryRunner subclasses are
# defined; otherwise, ZephyrBinaryRunner.get_runners() won't work.
_names = [
# zephyr-keep-sorted-start
'bflb_mcu_tool',
'blackmagicprobe',
'bossac',
'canopen_program',
'dediprog',
'dfu',
'ecpprog',
'esp32',
'ezflashcli',
'gd32isp',
'hifive1',
'intel_adsp',
'intel_cyclonev',
'jlink',
'linkserver',
'mdb',
'minichlink',
'misc',
'native',
'nrfjprog',
'nrfutil',
'nsim',
'nxp_s32dbg',
'openocd',
'probe_rs',
'pyocd',
'qemu',
'renode',
'renode-robot',
'rfp',
'silabs_commander',
'spi_burn',
'spsdk',
'stm32cubeprogrammer',
'stm32flash',
'sy1xx',
'teensy',
'trace32',
'uf2',
'xsdb',
'xtensa',
# zephyr-keep-sorted-stop
]
for _name in _names:
_import_runner_module(_name)
def get_runner_cls(runner):
'''Get a runner's class object, given its name.'''
for cls in ZephyrBinaryRunner.get_runners():
if cls.name() == runner:
return cls
raise ValueError(f'unknown runner "{runner}"')
__all__ = ['ZephyrBinaryRunner', 'MissingProgram', 'get_runner_cls']