Skip to content

Conversation

@kyberdin
Copy link
Contributor

@kyberdin kyberdin commented Dec 1, 2025

Overview

  • Keeps update-related information consolidated in a single location.
  • Moving the information into its own page prevents further expansions and/or diagrams from bloating the general Ironside SE docs so that it is easier to navigate.
  • Programming steps are discussed in the update docs, as that process is either part of the manual update or provisioning; the latter being documented in provisioning.
  • Describing the ZIP archive is expanded into a release deliverable section and moved into the update context.
  • Default configurations aren't strictly related to either but are still important to discuss in general ISE.

Relates to

@NordicBuilder NordicBuilder added doc-required PR must not be merged without tech writer approval. changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added. labels Dec 1, 2025
@kyberdin kyberdin force-pushed the ironside-update-docs branch from 1114bcf to ed05cf8 Compare December 1, 2025 14:48
@SebastianBoe
Copy link
Contributor

A quick comment.

I don't think upstream Zephyr can reference NCS docs.

@NordicBuilder
Copy link
Contributor

NordicBuilder commented Dec 1, 2025

CI Information

To view the history of this post, click the 'edited' button above
Build number: 4

Inputs:

Sources:

sdk-nrf: PR head: a9646aede0302723b2f4deec0f1016299d5277df

more details

sdk-nrf:

PR head: a9646aede0302723b2f4deec0f1016299d5277df
merge base: 6756485f1f0184a6420ffc90bfd228fc533335ab
target head (main): 6756485f1f0184a6420ffc90bfd228fc533335ab
Diff

Github labels

Enabled Name Description
ci-disabled Disable the ci execution
ci-all-test Run all of ci, no test spec filtering will be done
ci-force-downstream Force execution of downstream even if twister fails
ci-run-twister Force run twister
ci-run-zephyr-twister Force run zephyr twister
List of changed files detected by CI (3)
doc
│  ├── nrf
│  │  ├── app_dev
│  │  │  ├── device_guides
│  │  │  │  ├── nrf54h
│  │  │  │  │  ├── images
│  │  │  │  │  │  │ nrf54h20_ironside_update.svg
│  │  │  │  │  ├── ug_nrf54h20_ironside.rst
│  │  │  │  │  │ ug_nrf54h20_ironside_update.rst

Outputs:

Toolchain

Version:
Build docker image:

Test Spec & Results: ✅ Success; ❌ Failure; 🟠 Queued; 🟡 Progress; ◻️ Skipped; ⚠️ Quarantine

  • ◻️ Toolchain
  • ◻️ Build twister
  • ◻️ Integration tests
Disabled integration tests
    • test-fw-nrfconnect-nrf_lrcs_mosh
    • test-fw-nrfconnect-nrf_lrcs_positioning
    • desktop52_verification
    • test_ble_nrf_config
    • test-fw-nrfconnect-apps
    • test-fw-nrfconnect-ble_mesh
    • test-fw-nrfconnect-ble_samples
    • test-fw-nrfconnect-chip
    • test-fw-nrfconnect-fem
    • test-fw-nrfconnect-nfc
    • test-fw-nrfconnect-nrf-iot_cloud
    • test-fw-nrfconnect-nrf-iot_libmodem-nrf
    • test-fw-nrfconnect-nrf-iot_lwm2m
    • test-fw-nrfconnect-nrf-iot_samples
    • test-fw-nrfconnect-nrf-iot_thingy91
    • test-fw-nrfconnect-nrf-iot_zephyr_lwm2m
    • test-fw-nrfconnect-nrf_crypto
    • test-fw-nrfconnect-ps-main
    • test-fw-nrfconnect-rpc
    • test-fw-nrfconnect-rs
    • test-fw-nrfconnect-tfm
    • test-fw-nrfconnect-thread-main
    • test-low-level
    • test-sdk-audio
    • test-sdk-dfu
    • test-sdk-find-my
    • test-sdk-mcuboot
    • test-sdk-wifi
    • test-secdom-samples-public

Note: This message is automatically posted and updated by the CI

=================================

nrfutil device recover --serial-number <serial>
Global domain memory can be protected from write operations by configuring the :ref:`UICR.PROTECTEDMEM <ug_nrf54h20_ironside_se_protected_memory>` registers.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is inaccurate.

Global domain memory may have it's integrity checked on boot.

Protectedmem doesn't block writes in any way.

Note that this is different from how UICR is protected. UICR is both protected by blocking writes and
by checking integrity.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right, I conflated it with MPCCONF.

That isn't supported yet but the statement here comes from our current docs (without noting PROTECTEDMEM specifically). I'll remove the line altogether to avoid referencing functionality that isn't implementated yet as of it does.

#. Erase non-volatile memory:

.. code-block:: console
Restricting default memory access
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Restricting default memory access
Restricting memory access

I think this conveys the same thing.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed as noted here.

.. code-block:: console
nrfutil device erase --all --serial-number <serial>
Performing an ``ERASEALL`` operation will remove the memory protections and disable all other protection mechanisms enforced through default UICR settings.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Performing an ``ERASEALL`` operation will remove the memory protections and disable all other protection mechanisms enforced through default UICR settings.
Performing an ``ERASEALL`` operation will remove the memory protections and disable all other protection mechanisms enforced through UICR settings.

ERASEALL erases UICR and disables all UICR protections, not just default UICR settings right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes - if there is no UICR then there are no UICR protections in place.

This has been moved to the "Global Resource Configuration" section and clarified as you noted. Until we add more documentation about memory access configurations, I think this applies more generally there.

.. code-block:: console
nrfutil device erase --all --serial-number <serial>
Performing an ``ERASEALL`` operation will remove the memory protections and disable all other protection mechanisms enforced through default UICR settings.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could add a reference here to the section that describes how ERASEALL can be performed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added to the moved text mentioned above.

@github-actions
Copy link

github-actions bot commented Dec 1, 2025

@SebastianBoe
Copy link
Contributor

A nice improvement :)

@kyberdin
Copy link
Contributor Author

kyberdin commented Dec 2, 2025

A quick comment.

I don't think upstream Zephyr can reference NCS docs.

Not through restructuredtext syntax, no. General hyperlinks work to NCS site pages though.

The description notes the branch with that change.

@kyberdin kyberdin force-pushed the ironside-update-docs branch from ed05cf8 to 60eaa90 Compare December 8, 2025 14:48
Copy link
Contributor Author

@kyberdin kyberdin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated for feedback and added new Architecture section.

#. Erase non-volatile memory:

.. code-block:: console
Restricting default memory access
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed as noted here.

.. code-block:: console
nrfutil device erase --all --serial-number <serial>
Performing an ``ERASEALL`` operation will remove the memory protections and disable all other protection mechanisms enforced through default UICR settings.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes - if there is no UICR then there are no UICR protections in place.

This has been moved to the "Global Resource Configuration" section and clarified as you noted. Until we add more documentation about memory access configurations, I think this applies more generally there.

.. code-block:: console
nrfutil device erase --all --serial-number <serial>
Performing an ``ERASEALL`` operation will remove the memory protections and disable all other protection mechanisms enforced through default UICR settings.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added to the moved text mentioned above.

@kyberdin kyberdin requested a review from SebastianBoe December 8, 2025 14:50
@kyberdin kyberdin marked this pull request as ready for review December 8, 2025 14:51
@kyberdin kyberdin requested review from a team and FrancescoSer as code owners December 8, 2025 14:51
Keeps update-related information consolidated in a single location
that can be referenced elsewhere.
Moving the information into its own page prevents further expansions
and/or diagrams from bloating the general Ironside SE docs so that
it is easier to navigate.

Ref: NCSDK-33336

Signed-off-by: Stephen Stauts <stephen.stauts@nordicsemi.no>
Aids navigation to relevant topics.

Ref: NCSDK-33336

Signed-off-by: Stephen Stauts <stephen.stauts@nordicsemi.no>
Programming steps are discussed in the update docs, as that process
is either part of the manual update or provisioning; the latter
being documented elsewhere.

Describing the ZIP archive is expanded into a release deliverable
section and moved into the update context.

Default configurations aren't strictly related to either but are still
important to discuss in general ISE.

Ref: NCSDK-33336

Signed-off-by: Stephen Stauts <stephen.stauts@nordicsemi.no>
Adds more details for architecture of update procedure, as well as
a graph of the process between local and secure domains.

Signed-off-by: Stephen Stauts <stephen.stauts@nordicsemi.no>
@kyberdin kyberdin force-pushed the ironside-update-docs branch from 60eaa90 to a9646ae Compare December 9, 2025 14:28
@NordicBuilder NordicBuilder requested a review from a team December 9, 2025 14:28
Copy link
Contributor

@FrancescoSer FrancescoSer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please hold off from merging this PR before another update heavily reorganizing ironside docs goes in.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added. DNM doc-required PR must not be merged without tech writer approval.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants