Commit Graph

715 Commits

Author SHA1 Message Date
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
Adrian Warecki
2c5e18b971 sign: rimage: Include uuid-registry.h header in toml preprocessing
Add a function generate_uuid_registry that calls the gen-uuid-reg.py script
to generate the uuid-registry.h file. If signing an image without sof,
trigger the generation of the uuid-registry.h file.

Instruct the toml file preprocessor to also use the definitions from the
uuid-registry.h file. This will allow the values ​​placed in the
uuid-registry to be used in toml files.

Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
2025-02-07 14:31: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
Chris Friedt
7bd0e84d20 west: commands: blobs: fail on checksum error
If a blob checksum does not match what is recorded in the
associated module.yml file, `west blobs fetch` should
(eventually) fail.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2025-02-03 19:52:58 +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
TOKITA Hiroshi
b739fbd20a scripts: west_commands: sdk: Display a download progress bar.
Improved the display using tqdm to show the download progress.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2025-01-31 09:38:09 +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
Gerhard Jörges
4455cd7351 scripts: west_commands: patch: add src module argument
The src-module argument can be used to select the module in which west
patch searches for patch definitions. This commit also allows the use of
module names instead of the path.

Signed-off-by: Gerhard Jörges <joerges@metratec.com>
2025-01-28 12:00: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
Pieter De Gendt
18f02a76f4 scripts: west_commands: patch: Add gh-fetch subcommand
Add a gh-fetch subcommand to the west patch extension to download a patch
file from Github and generate the patch meta data.

The patch info is appended to the patches.yml file.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-01-20 16:26:08 +01:00
Pieter De Gendt
1378669736 scripts: west_command: spdx: Exit with non-zero code on failure
If the init or the generation fails, the resulting exit code should be
non-zero.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-01-15 15:03:59 +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
Pieter De Gendt
640a8b9302 scripts: west_commands: Support out-of-tree runners
Add runners entry to the module schema and import the file specified.

Every class that inherits from ZephyrBinaryRunner will be discovered and
added to runners list.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-01-08 17:02:06 +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
Fin Maaß
9d0627a4bc scripts: west_commands: add --ignore-venv-check option
add --ignore-venv-check option to ignore the venv check.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-01-07 20:35:53 +01:00
Pieter De Gendt
4c5e74deae scripts: west_commands: patch: Use subprocess cwd
Instead of changing directories, pass the cwd argument to the different
subprocess calls.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-01-07 14:12:57 +01:00
Pieter De Gendt
78f96a6aba scripts: west_commands: Add module filter argument to patch command
Allow to run the west patch extension for specific modules only.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-01-07 14:12:57 +01:00
David Leach
90dfeaf61c scripts: west_commands: runners: Fix broken jlink runner
The cleanup pass (336c7da) to address long lines accidentally
removed a needed comma in the jlink runner.

Fixes #83605

Signed-off-by: David Leach <david.leach@nxp.com>
2025-01-07 00:27:28 +01:00
Gerhard Jörges
e4b2fe4b78 scripts: west_commands: fix type of path options
Using `west patch` with the `--patch-base`, `--patch-yaml` or
`--west-workspace` option results in an unhandled AttributeError in
filter_args() because the function expects these args to be of type
path. Adding the type to the argument definition forces argparse to
create variables of type path.

Signed-off-by: Gerhard Jörges <joerges@metratec.com>
2025-01-03 17:10:58 +00:00
Guennadi Liakhovetski
6d0c23be31 soc: intel_adsp: add support for .cold* sections
Add support for .cold and .coldrodata sections, used to implement
a cold module. Assigning code and read-only data to those sections
makes them suitable for use in a cold module, stored and executed in
slow memory.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-12-29 05:50:25 +01:00
Chris Friedt
ad611395ee scripts: west_commands: add the west patch command
In smaller projects and organizations, forking Zephyr is usually
a tenable solution for development continuity, in the case that
bug-fixes or enhancements need to be applied to Zephyr to
unblock development.

In larger organizations, perhaps in the absence of healthy patch
management, technical debt management, and open-source policies,
forking and in-tree changes can quickly get out of hand.

In other organizations, it may simply be preferable to have a
zero-forking / upstream-first policy.

Regardless of the reason, this change adds a `west patch`
command that enables users to manage patches locally in their
modules, under version control, with complete transparence.

The format of the YAML file (detailed in a previous comit)
includes fields for filename, checksum, author, email, dates,
along with pr and issue links. There are fields indicating
whether the patch is upstreamble or whether it has been merged
upstream already. There is a custom field that is not validated
and can be used for any purpose.

Workflows can be created to notify maintainers when a merged
patch may be discarded after a version or a commit bump.

In Zephyr modules, the file resides conventionally under
`zephyr/patches.yml`, and patch files reside under
`zephyr/patches/`.

Sample usage applying patches (the `-v` argument for additional
detail):
```shell
west -v patch apply
reading patch file zephyr/run-tests-with-rtt-console.patch
checking patch integrity... OK
patching zephyr... OK
reading patch file zephyr/twister-rtt-support.patch
checking patch integrity... OK
patching zephyr... OK
reading patch file zephyr/multiple_icntl.patch
checking patch integrity... OK
patching zephyr... OK
reading patch file zephyr/move-bss-to-end.patch
checking patch integrity... OK
patching zephyr... OK
4 patches applied successfully \o/
```

Cleaning previously applied patches
```shell
west patch clean
```

After manually corrupting a patch file (the `-r` option will
automatically roll-back all changes if one patch fails)
```shell
west -v patch apply -r
reading patch file zephyr/run-tests-with-rtt-console.patch
checking patch integrity... OK
patching zephyr... OK
reading patch file zephyr/twister-rtt-support.patch
checking patch integrity... OK
patching zephyr... OK
reading patch file zephyr/multiple_icntl.patch
checking patch integrity... OK
patching zephyr... OK
reading patch file zephyr/move-bss-to-end.patch
checking patch integrity... FAIL
ERROR: sha256 mismatch for zephyr/move-bss-to-end.patch:
expect: 00e42e5d89f68f8b07e355821cfcf492faa2f96b506bbe87a9b35a823fd719cb
actual: b9900e0c9472a0aaae975370b478bb26945c068497fa63ff409b21d677e5b89f
Cleaning zephyr
FATAL ERROR: failed to apply patch zephyr/move-bss-to-end.patch
```

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-12-24 11:15:38 +01:00
Peter Johanson
27615a7cf1 west: runners: bossac: Honor --erase flag
Instead of unconditionally erasing the whole target, add
support for using the common --erase flag.

Signed-off-by: Peter Johanson <peter@peterjohanson.com>
2024-12-22 18:20:30 +00:00
Josuah Demangeon
5847e04be8 west: runner: add support for ecpprog
The ecpprog command is an utility written by Greg Davill for flashing
FPGAs such as ECP5 or CrossLink-NX series. Devkits typically have an
FTDI interface chip to access the external flash. FPGA image is
typically at flash offset 0x00000000 flash offset, and the Zephyr
image offset can be set via CONFIG_FLASH_LOAD_OFFSET.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2024-12-19 08:38:55 +01:00
Mathieu Choplain
4dc8acc6d1 scripts: west: runners: stm32cubeprogrammer: add start address argument
Add new '--start-address' argument to the STM32CubeProgrammer west runner.
This argument can be used to specify an address from which the MCU should
start executing, instead of relying on the default value in CubeProgrammer.

Also update STM32CubeProgrammer runner tests to support new argument.

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2024-12-17 23:15:13 +01:00
Guennadi Liakhovetski
733241d737 west: rimage: generate TOML with all LLEXTs included
"west sign" uses the C preprocessor to generate a TOML configuration
file, needed for rimage. When creating LLEXTs rimage also uses a
configuration file where all supporting components are configured as
LLEXT. This adds such a file generation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-12-17 11:35:32 +00:00
Pieter De Gendt
4d1d8a77a7 scripts: west_commands: runners: openocd: Fix debugging with TUI
Prevent server output when running gdb with --tui to prevent garbled
console output.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-12 19:59:35 +01:00
Andy Ross
82c5f548d9 scripts/west/sign: Auto-detect rimage ELF files
This code had a growing "enumerate all the platforms" wart.  In point
of fact only intel_adsp is special here.  Other rimage platforms don't
have a bootloader and use zephyr.elf directly.

Don't hard code platform names (especially since they aren't the same
as board/soc names!).  Just autodetect which scheme we have at
runtime.

Signed-off-by: Andy Ross <andyross@google.com>
2024-12-05 22:08:55 +01:00
Pieter De Gendt
9e4f8616e1 scripts: west_commands: runners: teensy: Replace printf with f-string
Fix linter warning UP037 for teensy runner.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-03 23:30:00 +00:00
Tomasz Chyrowicz
866e690dda scripts: nrf_common: Move MPI to sysbuild Kconfig
Use sysbuild to build and configure SUIT Manifest Provisioning
Information.

Signed-off-by: Tomasz Chyrowicz <tomasz.chyrowicz@nordicsemi.no>
2024-12-02 22:05:27 +00:00
Michael Hope
de19a13c34 runners: add minichlink
This commit adds a runner wrapper for the 'minichlink' program which
offers a free, open mechanism to use the CH-LinkE programming dongle for
the CH32V003.

https://github.com/cnlohr/ch32v003fun/tree/master/minichlink

Signed-off-by: Michael Hope <michaelh@juju.nz>
Signed-off-by: Dhiru Kholia <dhiru.kholia@gmail.com>
2024-11-26 14:41:46 +00:00
Pieter De Gendt
43b112a309 scripts: west_commands: runners: Fix jlink unbound cmd
Commit e2a32d8b0ca596afeae48739c43817f693720a88 introduced an unbound
cmd issue for jlink flashing.

Fixed by moving cmd assignment outside of condition.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-26 08:45:06 +01:00
Jean-Christophe Pince
dd5874b924 jlink: custom flashing support
Allows to use a custom flashing script with jlink runners.

Signed-off-by: Jean-Christophe Pince <jean.christophe.pince@qorvo.com>
2024-11-25 21:53:43 +01:00
Pieter De Gendt
2ad915284b scripts: west_commands: Add packages command
Add a new west command as helper for package management of Zephyr
and modules.

The first package manager to get supported is pip, where west projects
can list individual packages or requirements files in their module file.

A convenience --install argument is added to install the packages instead.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-25 12:16:43 +01:00
Pieter De Gendt
bf2db7afc0 python: Format and sort imports
ruff check --select I001 --fix applied to all python files that had
this as only issue.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-25 10:07:13 +01:00
Pieter De Gendt
86a8dacaa1 scripts: west_commands: Fix MissingProgram import
MissingProgram should be exported in __all__.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-23 15:28:33 +01:00
Pieter De Gendt
336c7dadac scripts: west_commands: runners: Fix line-too-long (E501)
Wrap long lines to max 100 characters.

See https://docs.astral.sh/ruff/rules/line-too-long/

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-22 17:40:37 +01:00
Pieter De Gendt
775db0e63a scripts: west_commands: runners: Fix f-string (UP032)
Replace .format() calls with f-strings.

See https://docs.astral.sh/ruff/rules/f-string/

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-22 17:40:37 +01:00