Commit graph zephyr/scripts
Author SHA1 Message Date
Tomasz Chyrowicz
0e99df3ca8 dts: Handle phandles in cmake
Add a possibility to use phandles values in CMake.

Signed-off-by: Tomasz Chyrowicz <tomasz.chyrowicz@nordicsemi.no>
2026-02-09 13:30:23 +01:00
Pieter De Gendt
2b57985df1 scripts: dts: python-devicetree: Fix failing test with uppercase address
Commit f55358bcbf changed all hex values to
use lowercase characters. Update the test accordingly.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-02-09 09:37:12 +01:00
Maciej Sobkowski
61ba3c9cd6 instrumentation: support dynamic triggers
This makes using instrumentation with any sample/board combination
much easier, as it eliminates the need to define a custom dt overlay.
Trigger/stopper functions need to be configured at build time.

Signed-off-by: Maciej Sobkowski <msobkowski@antmicro.com>
2026-02-06 13:53:34 +01:00
Jingsai Lu
36ffd63500 scripts: west_commands: add west reset command to reboot board
add west reset command with gdb reset for jlink runner

Signed-off-by: Jingsai Lu <jingsai.lu@nxp.com>
2026-02-06 11:15:23 +01:00
Johan Hedberg
9fa30fc2bf scripts: zephyr_module: Fix optionality of "click-through" for blobs
When pykwalify was changed to jsonschema in commit 58bf2dc the optionality
of 'click-through' was lost. Fix this by making sure there's always a value
in the dictionary, eliminating the following error when the key is missing:

if blob['click-through'] and not args.auto_accept:
   ~~~~^^^^^^^^^^^^^^^^^
KeyError: 'click-through'

Signed-off-by: Johan Hedberg <johan.hedberg@silabs.com>
2026-02-05 13:01:36 +00:00
Mathieu Choplain
2c43940195 scripts: footprint: fpdiff: read proper value for symbol sizes
The AnyNode class has a `size` property which hides the value sourced from
JSON key 'size', resulting in the script displaying nonsense. Consume the
proper value by directly accessing the __dict__ which holds it instead of
relying on the dot operator.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2026-02-05 10:20:35 +00:00
Sylvio Alves
b4f469a7d4 scripts: coccinelle: add MISRA 10.1 boolean essential type check
Add boolean_strict_init.cocci to detect improper boolean initialization
and assignment using integer literals (0/1) instead of true/false.

This enforces Zephyr coding guideline #59 (MISRA C:2012 Rule 10.1)
which states that operands shall not be of an inappropriate essential
type.

Rules added:
- rule1_init: detects bool var = 0/1 initialization
- rule2_assign: detects bool_var = 0/1 assignment

The original boolean.cocci (Rule 14.4) remains disabled due to
performance issues on large files causing CI timeouts. See PR #34773.

Enable boolean_strict_init.cocci in guideline_check.py so CI runs this
check on changed files.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-02-04 12:52:07 -06:00
Kyle Bonnici
f55358bcbf dts: use lowercase hex values in DTS files.
Apply chnages from dts-linter 0.3.9.

Improve compliance with DTS Coding Style which says that:

4) Hex values in properties, e.g. “reg”, shall use lowercase hex.
   The address part can be padded with leading zeros.

Signed-off-by: Kyle Bonnici <kylebonnici@hotmail.com>
2026-02-04 13:49:43 +01:00
Kyle Bonnici
3749347e1b CI: Update dts-linter dts-linter 0.3.9
Update DTS linter apply lowercase hex values in DTS files
Improve compliance with DTS Coding Style which says that:

4) Hex values in properties, e.g. “reg”, shall use lowercase hex.
   The address part can be padded with leading zeros.

This need dts-linter 0.3.9

Signed-off-by: Kyle Bonnici <kylebonnici@hotmail.com>
2026-02-04 13:49:43 +01:00
Darcy Lu
e7e2b0a16c script: Add flash runner for rts5817
Add flash runner script to support west flash for rts5817

Signed-off-by: Darcy Lu <darcy_lu@realsil.com.cn>
2026-02-04 13:49:21 +01:00
Sylvio Alves
738c5b713d runners: auto-select build artifact when --file-type is specified
when --file-type is provided without --file, automatically select
the corresponding build artifact (zephyr.hex, zephyr.bin, or
zephyr.elf) instead of requiring the user to specify both flags.

the validation that --file-type requires --file is preserved in
core.py, but run_common.py now auto-populates --file before the
validation runs.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-02-03 14:25:14 -06:00
Chris Friedt
c78a0e2550 scripts: ci: guideline_check: ignore tests/posix/ in coccinelle
Exclulde `tests/posix/` when running coccinelle checks for reserved names
since POSIX implements much of the reserved names.

This avoids the following failure in CI

```shell
Error: tests/posix/xsi_single_process/src/putenv.c:12: WARNING: \
  Violation to rule 21.2 (Should not used a reserved identifier) - putenv
```

Signed-off-by: Chris Friedt <chris@fr4.co>
2026-02-03 08:22:49 -06:00
Pieter De Gendt
f728794ac0 scripts: dts: gen_dts_cmake.py: Fix keys in dict linter issue
Simplify loop as reported by ruff.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-02-02 11:37:53 -06:00
Pieter De Gendt
85a6e11bdb scripts: dts: gen_dts_cmake.py: Prevent trailing semicolon for lists
The generated lists have a trailing semicolon, which for CMake would
indicate a trailing empty item.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-02-02 11:37:53 -06:00
Pieter De Gendt
4159632248 scripts: dts: gen_dts_cmake.py: Format file
Format the gen_dts_cmake_py file using ruff.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-02-02 11:37:53 -06:00
Guðni Már Gilbert
b4108b53f6 scripts: tests: speed up test_output_levels
Assign a platform to the test so Twister doesn't
pick up multiple platforms.

This reduces the test time by ~2 minutes.

Before: 9 passed in 265.88s (0:04:25)
After: 9 passed in 140.24s (0:02:20)

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-02-02 14:46:53 +01:00
Guðni Már Gilbert
fc8e096ee1 scripts: twister: minor speedup in apply_filters
Move a check to run earlier in a for-loop to minimize doing unnecessary
work like creating TestInstance class instances.

This is a very minor optimization when the number of testsuites are low.
But starts to count when there are a lot of testsuites.

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-02-02 14:46:34 +01:00
Jon Ringle
c6c014929e scripts: footprint: size_report: Fix TLS symbol attribution
TLS sections (e.g. .tdata/.tbss) use addresses as TLS offsets and can
overlap normal VMA ranges. Avoid using TLS section address ranges for RAM
bucketing and classify TLS symbols using section flags instead.

Signed-off-by: Jon Ringle <jringle@gridpoint.com>
2026-02-02 14:44:13 +01:00
Afonso Oliveira
5c7be7ecb7 runners: Add lldbac runner for run-lldbac debugging
Introduce a new Zephyr runner, `lldbac`, providing interactive debugging
for both nSIM (simulator) and physical hardware using the run-lldbac
tool from Synopsys ARC MWDT.

This runner provides integrated debugging support:
- debug: Interactive debugging with integrated server management,
  Available for both simulator and hardware (integrated mode)
- flash: Flash and run on physical hardware,
  Available for hardware only (simulator should use arc-nsim)

Key features:
- Hardware mode: Flash and debug on physical hardware using JTAG flags
- Simulator mode: Interactive debugging on nSIM using run-lldbac with
  --nsim flag (props or --tcf). Enable with --simulator flag.
- Board-driven config: Boards can specify defaults in board.cmake
- TCF support: Optional --tcf for simulator mode (mutually exclusive
  with --nsim-props)
- GUI support: Optional --gui flag for VS Code debugging
- Postconnect support: Execute commands after connection via
  --postconnect-cmd and --postconnect-file for hardware initialization
- Board JSON: Optional --board-json for complex board configurations

Hardware configuration (flag-based):
- --jtag-device: JTAG device name (optional, auto-detected)
- --jtag: JTAG adapter type (default: jtag-digilent)
- --jtag-frequency: JTAG clock frequency (default: 500KHz)
- --postconnect-cmd: Command to execute after connection
  (can be used multiple times)
- --postconnect-file: File containing commands to execute after
  hardware initialization
- --board-json: Path to board.json file for board configuration

Simulator configuration:
- --simulator: Enable simulator mode (required)
- --nsim-props: nSIM properties file path
- --tcf: Tool Configuration File (alternative to --nsim-props)

Signed-off-by: Afonso Oliveira <afonsoo@synopsys.com>
Signed-off-by: Mohamed Moawad <moawad@synopsys.com>
2026-02-02 14:43:05 +01:00
Robert Robinson
ccf98f74bf scripts: runners: nrf: Add support for nRF7120
Add support for nrf7120 to use nrfutil runner in
upstream zephyr.

Signed-off-by: Robert Robinson <robert.robinson@nordicsemi.no>
2026-02-02 12:55:40 +01:00
Guðni Már Gilbert
58bf2dc0e6 scripts: zephyr_module: replace pykwalify with jsonschema
Replace all usage of pykwalify in zephyr_module.py with jsonschema

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-02-02 09:59:40 +01:00
Hake Huang
cdd9d63a46 twister: handler: add spsdk support with dev_id
spsdk now support dev_id as parameter

Signed-off-by: Hake Huang <hake.huang@nxp.com>
2026-01-31 10:56:06 +01:00
Guðni Már Gilbert
bcb00aaa9a scripts: twister: don't parse snippets multiple times
Currently apply_filters is parsing & validating a snippet YAML
file multiple times, duplicating expensive work.

Do the work once per testsuite instead of for each testsuite
multiplied by number of toolchains.

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-01-30 16:56:25 -06:00
Lukasz Fundakowski
2ad2ce9fe1 twister: Improve error handling for user's errors
Exit from twister in case of user's error e.g. empty list
of tests provided by user instead of throwing unhandled
exception.

Signed-off-by: Lukasz Fundakowski <lukasz.fundakowski@nordicsemi.no>
2026-01-30 16:55:29 -06:00
Piotr Kosycarz
aedada06c6 scripts: pylib: twister: twisterlib: coverage: catch hex parsing
As parsing hex was moved, move also catching its possible errors.

Signed-off-by: Piotr Kosycarz <piotr.kosycarz@nordicsemi.no>
2026-01-30 05:59:28 -06:00
Kyle Bonnici
968bd7fa6f CI: Add prefix to dts-linter npx commands
When running check_compliance downstream the prefix path is not correct.
This need to be relative to zepphyr base.

This PR ensure that the prefix is set correctly when invoking dts-linter

Signed-off-by: Kyle Bonnici <kylebonnici@hotmail.com>
2026-01-30 09:20:02 +01:00
Somil Gupta
5b8764e463 checkpatch: warn on sizeof used with character literals
In C, character literals have type int, so using sizeof() on a
character literal evaluates to sizeof(int) and can easily lead to
subtle size miscalculations.

Add a new checkpatch warning to flag sizeof() usage on character
literals and suggest using an explicit cast instead.

Signed-off-by: Somil Gupta <somil24559@iiitd.ac.in>
2026-01-30 09:18:43 +01:00
Yves Wang
181e421611 scripts: traceconfig: Improve file path display
For Windows, if the build dir is under same drive with zephyr base, the
generated link shall be relative url like posix style.
If they are in different drive, url is meaningless. So just use raw link
format so that some editors can directly jump to.

Signed-off-by: Yves Wang <zhengjia.wang@nxp.com>
2026-01-29 16:08:38 -06:00
Yves Wang
745e0b28bd scripts: guiconfig: Add dark mode
TK under Windows/Linux did not have a native support for dark mode.

Signed-off-by: Yves Wang <zhengjia.wang@nxp.com>
2026-01-29 17:17:31 +01:00
Jon Ringle
cf5deb7c6e scripts: footprint: plot: Increase label font size
Improve readability of sunburst labels in generated interactive plot.

Signed-off-by: Jon Ringle <jringle@gridpoint.com>
2026-01-29 14:26:47 +00:00
Grzegorz Chwierut
1b1e902540 Revert "twister: pytest: fix duplicate log lines from pytest"
This reverts commit 96985a32e8.

Signed-off-by: Grzegorz Chwierut <grzegorz.chwierut@nordicsemi.no>
2026-01-29 14:26:41 +00:00
Jon Ringle
f6487c3b8c scripts: footprint: plot: Guard against missing total_size
When total_size is missing, skip the percentage line in hover text.

Signed-off-by: Jon Ringle <jringle@gridpoint.com>
2026-01-29 14:26:10 +00:00
Mathieu Choplain
edbdfcad8c llext: add discarded symbol groups inspector
When the LLEXT subsystem detects that a symbol is marked for export from
the main image, but the symbol group in which the export belongs is not
enabled, add a marker in a special section in addition to not placing the
symbol in the final export table.

Add a post-build script which consumes the special section as post-build to
dump information about all discarded symbols in a build artifact, and also
check for common errors (missing Kconfig symbol / improperly named groups).

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2026-01-29 13:42:56 +01:00
Mathieu Choplain
f2e5148dc1 scripts: build: llext: move ELF utilities to dedicated script
Move ELF-related utilities from the "llext_prepare_exptab" script to a
dedicated "llext_elf_toolkit" which can be reused by other LLEXT scripts.
While at it, also improve documentation of class SectionDescriptor.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2026-01-29 13:42:56 +01:00
Fin Maaß
0247086963 Kconfig: dt: add dt_node_array_prop_has_val
add dt_node_array_prop_has_val function and
extend dt_nodelabel_array_prop_has_val to be
used with string-arrays.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-01-29 13:38:01 +01:00
Jamie McCrae
27a91104c6 scripts: kconfig: Fix dt_chosen_partition_addr function
Fixes this function so that it returns the unit address of the
node, without having to rely on odd tricks to locate various parent
nodes and check that they have reg addresses and perform additions

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
2026-01-28 10:18:57 +01:00
Benjamin Cabé
1025dcc634 scripts: edtlib: preserve hexadecimal notation for integer values
When YAML binding files specify values in hexadecimal notation, this
information was previously lost during parsing as PyYAML converts hex to
regular integers.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2026-01-28 08:30:32 +01:00
TOKITA Hiroshi
724c35c871 scripts: dts: devicetree: tests: Add a map property test
Add a map property test for `test_edtlib.py`.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2026-01-28 08:29:57 +01:00
TOKITA Hiroshi
5979e40d32 scripts: dts: Add handling for *-map property
This change introduces generating definitions corresponding to
`*-map` property, which was currently discarded.

For `*-map` properties are made able to be treated as a variation
of phandle-array, assign sequential cell names for each group of
specifiers (child_specifier_0, child_specifier_1, ...,
parent_specifier_0, ...).

The `*-map` data is like a two-dimensional array, so it is difficult to
handle with the existing APIs, so we will also provide new APIs.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2026-01-28 08:29:57 +01:00
Benjamin Cabé
9cfb6f50bc scripts: ci: refresh requirements-actions.txt pinned versions and SHAs
Refresh pinned dependencies to pick up security updates for:

- pyasn1
- filelock
- virtualenv
- pynacl
- urllib3

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2026-01-27 08:38:24 -05:00
Guðni Már Gilbert
6b9177f750 scripts: snippets: update typing for Python 3.10+
Automatically done using :
pyupgrade --py310-plus scripts/snippets.py

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-01-27 10:54:26 +00:00
Guðni Már Gilbert
902a8c5700 scripts: snippets: optimize parsing performance
1. Load and validate the schema only once
2. Use CSafeLoader if it's available
3. Read YAML files in binary mode

This reduces the execution time of snippets.py from ~380ms
down to ~160ms when I build samples/basic/blinky for
nrf52dk/nrf52832

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-01-27 10:54:26 +00:00
Torsten Rasmussen
a0983a2f91 cmake: align board qualifiers in CMake with Kconfig
The value os board qualifiers in CMake and Kconfig differs.
CMake has a leading '/', as example:
CMake:   BOARD_QUALIFIERS=/nrf52840
Kconfig: BOARD_QUALIFIERS=nrf52840

This was also discussed in
https://github.com/zephyrproject-rtos/zephyr/pull/69740

This commit aligns the value of the CMake variable BOARD_QUALIFIERS to
the value of BOARD_QUALIFIERS (CONFIG_BOARD_QUALIFIERS) in Kconfig.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2026-01-27 10:52:37 +00:00
Sylvio Alves
e5a2574eca runners: openocd: migrate to standard --file/--file-type interface
Align the OpenOCD runner with the JLink runner by adopting the
framework's standard file selection mechanism:

- Add file=True to RunnerCaps to enable --file and --file-type args
- Deprecate --use-hex, --use-elf, --use-bin flags (still work with
  warning)
- Use FileType enum instead of string comparisons
- Support --file for custom file paths (like JLink)
- Store hex_name and bin_name alongside elf_name for consistency

Also remove the framework constraint that --file-type requires --file,
allowing boards to specify a preferred file format via board.cmake
without providing a custom file path.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-01-27 08:08:19 +01:00
Pieter De Gendt
c1e2b83180 scripts: dts: gen_driver_kconfig_dts.py: Format and fix linter issue
Run ruff formatter and linter on the script file and remove exclusions.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-01-27 08:06:39 +01:00
Sharon Lin
5d56e00bfb scripts: twister: fix codec cp950 error when running on Windows
When running twister on Windows host, the build will fail from
cmakecache.py with error as:
UnicodeDecodeError: 'cp950' codec can't decode byte 0xe2 in
position 3444: illegal multibyte sequence

Signed-off-by: Sharon Lin <slin@atmosic.com>
2026-01-27 08:05:16 +01:00
Guðni Már Gilbert
e3575fc848 scripts: twister: fix issue with empty serial in hwmap
jsonschema is more strict when it comes to typing and only allows
strings for 'serial' in hwmap-schema.yaml.

Since 'serial' is not a required key in the schema, this commit
removes the 'serial' key from generated hardware maps when the
'serial' value is empty /unknown.

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-01-26 10:11:35 -06:00
Guðni Már Gilbert
e9f106dd7a twister: replace pykwalify with jsonschema
Usage of pykwalify is deprecated.

Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
2026-01-26 10:11:35 -06:00
Pieter De Gendt
4e62f0510c scripts: ci: check_compliance.py: Add DT_HAS_ to exceptions
The docs refer to an non-existing config option, add it to the checklist.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2026-01-26 08:48:15 -05:00
Fin Maaß
c42538600f scripts: Refactor dt_compat_any_has_prop
Refactor dt_compat_any_has_prop
to reduce its Cognitive Complexity.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-01-26 14:15:18 +01:00