Skip to content

Conversation

hakonfam
Copy link
Contributor

@hakonfam hakonfam commented May 21, 2025

manifest-pr-skip

Ref: NCSDK-32229

@jonathannilsen jonathannilsen force-pushed the test-ironside branch 2 times, most recently from 507e1a6 to 95d8954 Compare June 10, 2025 16:00
@57300 57300 self-requested a review June 11, 2025 17:33
@jonathannilsen jonathannilsen force-pushed the test-ironside branch 3 times, most recently from f8cf77f to 61619bc Compare June 17, 2025 07:33
@jonathannilsen jonathannilsen force-pushed the test-ironside branch 4 times, most recently from f342a8e to 6a6b311 Compare June 20, 2025 12:17
@57300 57300 changed the title [DO NOT REVIEW - here for CI] tests: add ironside variant to all nRF54H20 tests Replace SDFW with IronSide SE Jun 24, 2025
@57300 57300 force-pushed the test-ironside branch 5 times, most recently from 110c667 to 022b565 Compare June 30, 2025 17:30
57300 and others added 5 commits July 1, 2025 07:00
This reverts commit 3608e26.

It needs more work.

Signed-off-by: Grzegorz Swiderski <[email protected]>
This reverts commit 360c80c.

Signed-off-by: Jonathan Nilsen <[email protected]>
…ions

Functions like `add` and `sub` can only return base 10 integers, which
means they can't really be used to define Kconfig symbols of type `hex`.

For the same reason, there already exist pairs of devicetree functions
named e.g., `dt_node_reg_addr_(int|hex)` after different return types.

Introduce `add_hex`, `sub_hex`, and friends.

To avoid confusion, it should be possible for those new functions to
accept arguments in base 16 as well. It's actually easier to let all
arithmetic functions take their inputs in "any" base, by leveraging
Python's built-in: `int(..., base=0)`.

Signed-off-by: Grzegorz Swiderski <[email protected]>
(cherry picked from commit 64bb8b6)
Upstream PR #: 91826

s/IRONside/IronSide/g

Signed-off-by: Grzegorz Swiderski <[email protected]>
(cherry picked from commit b629b60fe1329bf3d4e2070da05615599587f032)
…rad remotes

Upstream PR #: 91826

Switch which board is the remote in the test case for
mbox communication between nrf54h20dk/nrf54h20/cpuapp and
nrf54h20dk/nrf54h20/cpurad, making cpurad the remote instead.
This is done to prepare the sample for executing with IronSide SE,
where using cpurad as the main board doesn't make as much sense,
since cpuapp has to start cpurad.

Signed-off-by: Jonathan Nilsen <[email protected]>
(cherry picked from commit ac944ac742117669a1904bde345a4bacd4a1d5fc)
57300 and others added 12 commits July 1, 2025 07:00
…e only

Upstream PR #: 91826

Update this multi-core test to always run the `main` and `remote` images
on cpuapp and cpurad respectively.

This is to prepare the test for running with IronSide SE, in which case
keeping cpurad as the main board target wouldn't make as much sense,
because cpurad would have to be started by cpuapp.

Signed-off-by: Grzegorz Swiderski <[email protected]>
(cherry picked from commit 921733127636ea9cdb34cc1d74b557bc45029dbb)
…variants

Upstream PR #: 91826

This replaces the legacy SDFW compatible board configuration with the
IronSide SE compatible one, thus removing support for running samples
and tests on nRF54H20 devices with the old firmware.

All applications are expected to work on `nrf54h20dk/nrf54h20/cpuapp`
out of the box. For other board targets, all applications are expected
to boot, but may require additional peripheral configuration in UICR.
Build system support for the new UICR format is to be added separately.

Co-authored-by: Jonathan Nilsen <[email protected]>
Signed-off-by: Jonathan Nilsen <[email protected]>
Signed-off-by: Grzegorz Swiderski <[email protected]>
(cherry picked from commit ffa2e92ac089a9fc8545281ab51dd9b64f34c35c)
Upstream PR #: 91826

CONFIG_USE_DT_CODE_PARTITION had to be disabled to add MCUboot support.
As a result, CONFIG_FLASH_LOAD_SIZE was left at zero, which means that
the linker would claim all available MRAM for the app core.

For now, we can't allow that, because the default nRF54H20 DK memory map
divides MRAM between multiple cores in order to support various samples.

Signed-off-by: Grzegorz Swiderski <[email protected]>
(cherry picked from commit 6edd8d9b9db94630e642a586b2d572e0715ede95)
…F54H

Upstream PR #: 91826

nrf-regtool will not be used as part of IronSide SE compatible builds.
It will remain in use for the nRF92 series, until that too undergoes a
switch from SDFW to IronSide SE.

Signed-off-by: Grzegorz Swiderski <[email protected]>
(cherry picked from commit 925897a8858437286072eee904c5f8ce44b165b8)
Upstream PR #: 91826

Update memory map to be compatible with latest IronSide.

180kB MRAM is reserved.

Co-authored-by: Håkon Amundsen <[email protected]>
Signed-off-by: Håkon Amundsen <[email protected]>
Signed-off-by: Jonathan Nilsen <[email protected]>
(cherry picked from commit ce6c9859ebec2b844c7ba4c3aca4f3591d47bf42)
Upstream PR #: 91826

Refactor the default RAM memory map on nrf54h20dk:

Removes use of "nordic,owned-memory" which is no longer needed on
nrf54h20. Reserved memory nodes that were under "nordic,owned-memory"
have been moved directly under reserved-memory.

The memory shared between cpuapp-cpusec and cpurad-cpusec in RAM0x
is no longer used with IronSide, since IPC buffers toward the secure
domain are at new fixed locations. The cpuapp_data region
has been expanded to fill the available space in RAM0x when removing
these shared memory regions.

Signed-off-by: Jonathan Nilsen <[email protected]>
(cherry picked from commit e6f25af3528d0186c06fb5802fcbf70e5ad6e097)
Upstream PR #: 91826

With IronSide SE there is only one defined UICR which is at
the location of the APPLICATION UICR. Update the devicetree
definition accordingly, and use the "nordic,nrf-uicr" compatible
on the node since the domain distinction added by the v2 compatible
is no longer relevant.

Signed-off-by: Jonathan Nilsen <[email protected]>
(cherry picked from commit 7173111bd1d331783d4baae868919ed1c968b051)
Upstream PR #: 91826

Add support for generating UICR and associated artifacts in a
format compatible with IronSide SE, to be used for Nordic SoCs
in the Haltium family.

The main feature added with this is the ability to configure certain
global domain peripherals that are managed by the secure domain
through setting UICR.PERIPHCONF. This register points at a blob of
(register address, register value) pairs which are loaded
into the peripherals by IronSide SE ahead of the application boot.

The added helper macros in uicr.h can be used to add register
configurations to the PERIPHCONF. Entries added through these macros
are then extracted by a script, post-processed and placed in a blob
located at specific part of MRAM.

A default PERIPHCONF configuration has been added for the nrf54h20
soc to support the standard BLE use case (matching the configuration
in the soc devicetree).

Signed-off-by: Jonathan Nilsen <[email protected]>
(cherry picked from commit 04b901e469731891553e20a0fe56a490c75fb8b1)
…if present

Upstream PR #: 91826

Program the new UICR and PERIPHCONF artifacts if they are generated.
These are required for the application to operate properly if they
are in use.

Signed-off-by: Jonathan Nilsen <[email protected]>
(cherry picked from commit 9efd957fc462ece94b7ee2cc01a29a37fd90e184)
Upstream PR #: 91826

Update the recover mechanism for nrf54h to only call recover
once. Using nrfutil device recover with both --core Network and
--core Application is redundant with IronSide SE as both of these
map to the same operation which does a full erase of the device MRAM.

Additionally, recovering twice in a row specifically in a nrfutil
batch file (which is used by this runner implementation) triggers some
odd behavior with the current latest version of
nrfutil device + IronSide SE, which can cause the device to enter a
reset loop and appear unresponsive and preventing 'west flash --recover'
from working properly.

Signed-off-by: Jonathan Nilsen <[email protected]>
(cherry picked from commit 81aab562d563e36d9a5c5215bfe20411fcb5f8ab)
Upstream PR #: 91826

Use designated IRQ numbers, instead of generic defaults.

Signed-off-by: Grzegorz Swiderski <[email protected]>
(cherry picked from commit cbe6fc1aed11387d54ceeca07107d0f06c42608c)
…rammed

Upstream PR #: 91826

Booting the radio core when it is not programmed will typically
cause a reset loop. This can happen when programming multiple
images to a device, and the app core image is programmed before
the radio core.

With this change we avoid the reset loop in that case.

Signed-off-by: Håkon Amundsen <[email protected]>
(cherry picked from commit 7ceb179961d11518bd083958ca524aab2ff01669)
tomchy and others added 2 commits July 1, 2025 10:49
Upstream PR #: 92033

If the application uses slot 1 (i.e. in Direct XIP mode),
boot radio slot 1 instead of slot 0.

Signed-off-by: Tomasz Chyrowicz <[email protected]>
(cherry picked from commit 1f56dd0ebdd9d1e763cbf539edd29e24b0a74c58)
Enable the `empty_app_core` image when building for `cpurad`.

Signed-off-by: Grzegorz Swiderski <[email protected]>
Copy link

sonarqubecloud bot commented Jul 1, 2025

@carlescufi carlescufi merged commit 2ea472d into nrfconnect:main Jul 1, 2025
37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants