Commit Graph

421 Commits

Author SHA1 Message Date
Grzegorz Chwierut
db3c344af9 west: runners: Add ncs-provision to west flash command
Added automatic KMU key provisioning, when keyfile.json
file exists in the build directory.
This enables automated key provisioning during the
flashing process to enable testing nRF54L aplications using Twister.
Only applicable on nrfutil runner.

Signed-off-by: Grzegorz Chwierut <grzegorz.chwierut@nordicsemi.no>
2025-06-11 16:09:05 -07:00
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
Miguel Gazquez
783103ebf6 scripts: west_commands: runners: fix dt-flash handling in some runners
In minichlink and spi_burn, the script checks if dt_flash is True by
checking if the value is "y". But dt_flash is a boolean.
Fix these checks.

Also, when dt-flash is True, spi_burn calculate the address in a
convoluted way, by substrating CONFIG_FLASH_LOAD_OFFSET to
itself.
Simplify this computation.

Signed-off-by: Miguel Gazquez <miguel.gazquez@bootlin.com>
2025-06-04 10:03:40 +02:00
Miguel Gazquez
8c6a290d4a scripts: west_commands: runners: Fix default value for --dt-flash
The '--dt-flash' parameter accepts a string like "y", "yes", "no", etc,
and is supposed to be converted into a boolean value. This is only the
theory as in practice, the default value is set to 'n' and is never
converted to False afterwards.

Set the default value to False.

Signed-off-by: Miguel Gazquez <miguel.gazquez@bootlin.com>
2025-06-04 10:03:40 +02:00
Camille BAUD
fb937beb62 scripts: runners: Introduce bflb_mcu_tool runner
Introduces one of the official flash tools for bouffalolab platforms.

Co-authored-by: Gerson Fernando Budke <nandojve@gmail.com>
Signed-off-by: Camille BAUD <mail@massdriver.space>
2025-05-26 09:19:26 +02:00
Jiafei Pan
48ed1a74a6 scripts: runners: jlink: add support to flash to sram
Add new parameter "--flash-sram" for J-Link runner to flash the image
to SRAM and modify the PC register to start of SRAM.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
2025-05-20 09:16:47 +02:00
Benjamin Cabé
08206688fd scripts: runners: nios2 runner has been dropped
Remove `nios2` from list of available runners as it's just been dropped
with commit 5fe84d5b69

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-05-16 19:02:34 +02:00
Anas Nashif
5fe84d5b69 arch: nios2: remove arch
Remove architecture and dependencies.
Remove altera HAL supporting nios2

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2025-05-15 20:01:05 -04:00
Carles Cufi
6659d2d711 scripts: runners: nrfutil: Check return code after Popen
The code invoking nrfutil was not checking the return code of the
subprocess, which meant that if the underlying tool was exiting with a
failure error code it remained undetected.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-05-13 17:45:09 +02:00
Daniel DeGrasse
6ec7908239 scripts: west_commands: runners: do not print newline in telnet decode
Remove the newline printed after decoding a block of telnet data from
the server in the "pure python" implementation used when netcat is not
available. This newline print is incorrect as it is not in the RTT
output being produced from the device, and can impact programs like
twister which expect specific strings in the output and cannot handle
these strings being split across two lines

Signed-off-by: Daniel DeGrasse <ddegrasse@tenstorrent.com>
2025-05-08 12:25:07 +02:00
Phi Tran
7ac89d33b1 scripts: west: flash: Add support for .mot file format
Add support for .mot file flash using west flash command
The RX build output .mot as binary file to flash into
board

Signed-off-by: Phi Tran <phi.tran.jg@bp.renesas.com>
Signed-off-by: Duy Nguyen <duy.nguyen.xa@renesas.com>
2025-05-02 09:18:16 +02:00
TOKITA Hiroshi
4b563934a6 west: runners: openocd: Add option to start RTT server during debug
Add `--rtt-server` option to start RTT server when the OpenOCD
launched from `debug`, `debugserver`, and `attach` commands.

This option starts the RTT server and opens a port,
but RTT logging must be done externally.
That is, you must connect to port 5555 using `telnet` or `nc`
in another terminal to view the RTT log.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2025-04-29 20:08:20 -04:00
Sebastian Bøe
fff2fef27c west: runners: nrf_common: Temp hack for NRF54H20_IRON
Temp hack while waiting for NRF54H20_IRON support for Network in
nrfutil.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
2025-04-24 20:28:51 +02:00
Carles Cufi
999b6a14a4 west: runners: nrf: Add an option to control the ext erase mode
The erase mode for any external memory that is mapped to the address
space of the MCU is derived from the internal non-volatile memory erase
mode. In order to allow users to override the default value, add a new
--ext-erase-mode command-line option that takes an erase mode just like
--erase-mode does.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-04-16 08:07:44 +02:00
Carles Cufi
58e0e31c7e west: runners: nrf: Generalize the erase command
Instead of providing an `--erase-pages` command, generalize it to a new
`--erase-mode` one that can be set to `none`, `ranges`, or `all`. This
gives the user full control over the erase mode that will be passed on
to nrfutil.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-04-16 08:07:44 +02:00
Carles Cufi
01f65f658b west: runners: nrf: Fix typo in nrjfprog runner
The correct string is `ERASE_NONE`.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-04-16 08:07:44 +02:00
Sven Ginka
de6f1873c8 west: runners: add flash runner for sensry sy1xx socs
With this commit we add a runner that is capable of flashing
the sensry sy1xx socs via uart to support the onboard OTP
bootloader. Added the sy1xx runner to the list for
automated test.

Signed-off-by: Sven Ginka <s.ginka@sensry.de>
2025-04-04 12:06:07 +02:00
Håkon Amundsen
1fac1b917f boards: nordic: add 'iron' board variant
This is needed for next generation Secure Domain firmware.

Signed-off-by: Håkon Amundsen <haakon.amundsen@nordicsemi.no>
2025-04-01 11:54:30 +02:00
Hakan Jansson
f107dad6e9 west: runners: openocd: Fix version format regression
Change OpenOCD version regex to be compatible again with format strings
not having a space or newline immediately after the version nr.

Modified regex has been verified with the strings listed below.

Ubuntu:
"Open On-Chip Debugger 0.11.0"

ADI:
"Open On-Chip Debugger (Analog Devices 0.12.0-1.1.1)  OpenOCD 0.12.0 (2024-
08-27-17:25)"

Zephyr SDK:
"Open On-Chip Debugger 0.11.0+dev-00728-gb6f95a16c (2024-02-17-23:51)"

Infineon:
"Open On-Chip Debugger 0.12.0+dev-5.2.1.3248 (2024-08-08-17:29)"

Espressif:
"Open On-Chip Debugger v0.12.0-esp32-20240318 (2024-03-18-18:25)"

Fixes: 1c05f2121c

Signed-off-by: Hakan Jansson <hakan.jansson@infineon.com>
2025-04-01 04:14:58 +02:00
Peter Johanson
4399d9e3a2 west: runners: rfp: Add Reneses Flash Programmer runner
Add a basic RFP runner that supports the `flash` command targettting
the Renesas Standard Boot Firmware.

Signed-off-by: Peter Johanson <peter@peterjohanson.com>
2025-03-31 19:49:22 -04:00
Carles Cufi
f42cef9c81 runners: nrf: Default to ERASE_NONE for the nRF54L series
The Nordic nRF54L series ICs use RRAM instead of flash. This implies
that erasing the internal storage before writing the new firmware is not
required anymore (unlike NOR flash, which does).
Note that RRAM on nRF54L devices is not physically paged, and paging is
only artificially provided, with a page size of 4096 bytes, for an easier
transition of nRF52 software to nRF54L devices.
In order to speed up the flashing operation and avoiding doing wasteful
write operations on the RRAM, default to ERASE_NONE for ICs in these
series.
A new ``--erase-pages`` command-line switch has been added to allow
users to keep erasing the pages that will be written to the firmware.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-03-31 22:01:35 +02:00
Carles Cufi
bb1794bf3a west: runners: jlink: Use registry to locate JLink executable
Instead of hardcoding a set of paths and trying to find the JLink
executable in them, use the corresponding Windows registry to locate it:

`HKEY_CURRENT_USER\\Software\\SEGGER\\J-Link`

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-03-18 19:54:14 +01:00
Carles Cufi
4c12a8c782 west: runners: jlink: Avoid running logic when another runner is used
The logic to detect the default JLink location was placed at the top of
the script, executing whenever the script was imported. The west
extension command framework loads all runners when initializing, and so
this logic was being executed even when using another runner.

Move the logic to a function that is only executed when the JLink runner
is selected, to avoid executing it at all times.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-03-18 19:54:14 +01:00
Pete Johanson
1c05f2121c west: runners: openocd: Handle ADI OpenOCD fork version format
The ADI fork of OpenOCD prints a modified version line; adjusting the
regex to account for that different format when checking the OpenOCD
version.

Signed-off-by: Pete Johanson <pete.johanson@analog.com>
2025-03-17 21:01:41 -04:00
Ederson de Souza
70c89811be scripts and soc: Mark MD5 and SHA1 usage as not for security
MD5 and SHA1 are not supposed to be used nowadays on security context.
Some ancillary scripts in tree do use them, but for verification only -
or where externally mandated, such the SPDX tool.

This patch marks those usages as `usedforsecurity=False`, which helps
clarify intent.

Signed-off-by: Ederson de Souza <ederson.desouza@intel.com>
2025-03-11 04:52:15 +01:00
Carles Cufi
c9151be798 west: runners: Add support for multiple device IDs
In order to enable the use case where the underlying flash tool supports
bulk-flashing using multiple device IDs, augment the core runner class
with this new runner capability and implement it in the nrfutil runner,
since the nrfutil tool supports it natively.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-03-07 20:24:23 +01:00
Erwan Gouriou
fb4bb5d768 scripts: west: runners: stm32cubeprogrammer: Fix stm32n6 dfu flashing
Rework of the flashing algorithm broke the STM32N6 dfu flashing.
Add the case of using usb port and download-modifier (new n6 specific
option) as a new case of using the bin file for flashing.

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2025-03-06 17:18:25 +00:00
Erwan Gouriou
b1f9428668 scripts: runners: stm32cubeprogrammer: Factorize type lambda function
Now that it is used twice, factorize lambda and comment.

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2025-02-26 15:04:45 +01:00
Erwan Gouriou
1be4025550 scripts: runners: stm32cubeprogrammer: Review f/w selection algorithm
Aim is to avoid 2 issues:
- Requesting --download-address to flash hex files
- Flashing hex files (non signed) on N6 which works but doesn't allow
persistent firmware

Hence this changes binds --download-address with usage of .bin files.
If --download-address was not provided, default to hex flashing.

File existence done with isfile() will ensure the required file
is available before flashing and report an error if this is not the
case.
Note: In specific N6 case, we're verifying zephyr.signed.bin is
available instead of zephyr.bin. This is ensure since self.cfg.bin_file
matches runners_yaml_props_target configuration (set to
zephyr.signed.bin on STM32N6).

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2025-02-26 15:04:45 +01:00
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
Findlay Feng
5ce031754a west: runners: Fix openocd's rtt shell display
To use openocd rtt shell in a non-Windows environment,
you need to turn off ICANON and ECHO.
Refer to pyocd to enable a temporary terminal and configure
it correctly.

Signed-off-by: Findlay Feng <i@fengch.me>
2025-02-12 09:39:48 +01:00
Carles Cufi
16f212d6f2 scripts: runners: nrf54H/92: Use RESET_HARD instead of RESET_SYSTEM
The nRF54H and the nRF92 series do not support the RESET_SYSTEM reset
kind. Instead one must use RESET_HARD, which this patch now implements.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-02-07 07:38:36 +01:00
Carles Cufi
7254a61530 scripts: runners: nrf: Fix flashing of FLPR/PPR on nRF54H20
After commit aaefaad, flashing of the FLPR and PPR cores in the nRF54H20
was broken due to those cores missing from the _get_core() function that
retrieves the core to program, triggering an exception. Fix it by
referencing those cores and mapping them to the application core.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-02-06 14:47:25 +01:00
Carles Cufi
2effae5594 scripts: runners: nrfutil: Add a new external memory config param
This acts in a similar way to nrfjprog's --qspiini parameter introduced
in 7eb364b, but works slightly differently in nrfutil: it requires a
config file in JSON format instead of .ini, and it is passed along to
the `execute-batch` command instead of providing it together with the
`program` command.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-02-05 21:01:57 +01:00
Carles Cufi
f20168fe89 scripts: runners: nrf: Honor the --erase flag for external memory
Both backends supported as runners for nRF ICs, nrfjprog and nrfutil,
support erasing external memory as part of the programming operation.
Before this patch, and when the firmware was detected to be partially or
fully placed in external flash by inspecting the .hex address range, the
runner would instruct the backend tool to fully erase the external
flash (but the nrfjprog runner would ignore that, always erasing only
the sectors required). Instead, correctly default to erasing only the
sectors that are required to program the new firmware image in both tools,
and erase it completely only when the --erase flag is provided by the user.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-02-05 21:01:57 +01:00
Carles Cufi
17a671ca00 scripts: runners: nrf: Default to soft reset for the nRF52 series
The Nordic nRF52 series have a peculiarity that is not shared with any
other Nordic families of SoCs: the reset pin can be reconfigured as a
regular GPIO. This has an unintended consequence: if the user has
reconfigured the pin in Devicetree to be a GPIO, `west flash` will
override that and configure the IC to use it as a reset pin, and the
firmware at boot won't be able to switch it back to GPIO, because that
requires a UICR erase. This behavior is very confusing to users, because
the GPIO does not work at all, since it is now just a reset line.

With this patch, `west flash` defaults to using soft reset instead of
pin reset for the nRF52 family of devices, to avoid overwriting the
reset pin configuration that the user includes in the image.

In order to be able to continue to use pin reset for users that so
desire it, a new option `--pinreset` is added that forces the use of pin
reset. The existing `--softreset` option is left exactly as it was, but
it is now applicable only to families other than the nRF52.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-02-05 01:13:42 +01:00
Carles Cufi
706689b376 scripts: runners: nrf: Fix missing kind in erase operations
Commit dc7d8bb introduced the requirement to provide the erase kind when
executing the corresponding op, but it was forgotten in this particular
spot.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-02-04 15:01:36 +01:00
Erwan Gouriou
a37a9c323a scripts: stm32cubeprogrammer: Add 2 new options for start and download
Implement possibility to specify options for --start and --download
arguments.
These options are implemented as lists to better fit STM32CubeProgrammer
programming model.

This options are required to enable the programming of STM32N6 in USB-DFU
mode, which requires "-d my.bin 0x1 -s noack" arguments list.

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2025-02-03 19:56:49 +01:00
Carles Cufi
dc7d8bbe16 scripts: runners: nrf: Implement the erase command
The `erase` command was being used but there was no "backend"
implementation for it in nrfutil nor nrfjprog. Simplify the syntax and
implement it for both tools.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-02-03 16:59:40 +01:00
Carles Cufi
4e8ec169fb scripts: runners: nrfjprog: Remove erasepage handling
This is no longer used at all.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-02-03 16:59:40 +01:00
Carles Cufi
fa66984c2b scripts: runners: nrf: Add UICR ranges for nRF54L
These are used to detect if the firmware image contains any values
inside the UICR for additional handling.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-02-03 16:59:40 +01:00
Carles Cufi
aaefaad898 scripts: runners: nrf: Remove the nRF5340 special handling
This is no longer necessary, because thanks to sysbuild we no longer
invoke a runner with a .hex file that is the result of merging builds
for more than one core.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-02-03 16:59:40 +01:00
Carles Cufi
51661efae6 scripts: runners: nrf: Fix a missing indirection
In commit 6e9e839195, an indirection via
the new `options` dictionary was missed in the SUIT handling.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-01-29 15:13:46 +01:00
Guillaume Gautier
5e40b65fe9 scripts: stm32cubeprogrammer: Add possibility to flash a bin file
Add the option to flash a bin file if one is available from the board's
cmake configuration.
Use of elf has prio over this, and bin has prio over hex which remains
the default option.
Also add a parameter to stm32cubeprogrammer runner to specify the download
address.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2025-01-28 18:14:45 +01:00
Carles Cufi
6e9e839195 scripts: runners: nrfutil: Switch to command-line args instead of JSON
Instead of pre-generating the JSON batch to then execute it, use
command-line arguments and --x-append-batch to generate the JSON file
tht will then be passed to x-execute-batch.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-01-27 21:04:06 +01:00
Jordan Yates
ced3df6873 runners: openocd: support --erase
Add support for the `--erase` option on `west flash`, for boards that
specify at least one `--cmd-erase` option.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-01-21 19:27:27 +01:00
Daniel DeGrasse
986a170a39 scripts: west_commands: runners: fix support for JLink RTT
JLink refuses new RTT telnet connections for a few moments after a socket
closes. This causes an issue when using `nc` as the telnet viewer, since
JLink would deny the connection. To resolve this, keep the "ping" socket
we use to determine if the RTT viewer is active connected, and use that
socket for RTT communication.

Signed-off-by: Daniel DeGrasse <ddegrasse@tenstorrent.com>
2025-01-14 22:54:21 +01:00
Martin Jäger
0728f5d0e2 scripts: west_commands: runners: esp32: add flash encryption option
Add an argument `--esp-encrypt` to flash an ESP32 series chip with
encrypted flash.

The content of the binary is encrypted on the fly by the chip. It is
not required to know the encryption key. However, the fuses that
disable encrypted flash download must be kept enabled for this to work.

Signed-off-by: Martin Jäger <martin@libre.solar>
2025-01-13 10:09:36 +01:00
Eric Holmberg
3d42a1cfbc west: runners: add option 'v' prefix to OpenOCD version string
The Espressif branch of OpenOCD uses the version string "v0.12.0" instead
of "0.12.0" causing the version regex match to fail.

Add an optional 'v' prefix to avoid the failure.

Fixes: #83373
Signed-off-by: Eric Holmberg <eric.holmberg@northriversystems.co.nz>
2025-01-10 02:16:04 +01:00
Jordan Yates
5f0c800591 runners: jlink: win32: search for valid JLink.exe
Since "JLink.exe" is also an executable distributed with JDK's, do an
explicit search on the standard SEGGER install directories for a JTAG
"JLink.exe" before falling back to whatever is first on PATH.

Fixes #51825.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-01-08 01:30:13 +01:00