You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/nrf/app_dev/device_guides/nrf54h/ug_nrf54h20_ironside.rst
+28-16Lines changed: 28 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -670,6 +670,8 @@ To protect the nRF54H20 SoC in a production-ready device, you must enable the fo
670
670
It blocks all `ERASEALL` operations on NVR0, preserving UICR settings even if an attacker attempts a full-chip erase.
671
671
672
672
673
+
.. _ug_nrf54h20_ironside_se_boot_report:
674
+
673
675
IronSide boot report
674
676
********************
675
677
@@ -728,24 +730,33 @@ This data is suitable as a source of initial entropy.
728
730
729
731
.. _ironside_se_booting:
730
732
731
-
Booting of other domains
733
+
Booting of local domains
732
734
************************
733
735
734
-
|ISE| boots the System Controller core first, followed by the application core, in that order.
735
-
When booting the application core, |ISE| does the following:
736
+
This section describes the default boot flow used by |ISE|.
737
+
For information about the alternative boot flow that uses the secondary firmware, see :ref:`ug_nrf54h20_ironside_se_secondary_firmware`.
738
+
739
+
|ISE| boots only the application core CPU.
740
+
The application core then triggers the boot of other local domain CPUs, such as the radio core, through the :ref:`ug_nrf54h20_ironside_se_cpuconf_service`.
741
+
742
+
Application domain boot sequence
743
+
================================
744
+
745
+
When booting the application domain, |ISE| performs the following operations:
746
+
747
+
* Sets the processor's vector table address to the start of the application-owned memory region.
748
+
* Verifies for firmware availability by reading the reset vector from the second 32-bit word of the vector table and comparing it to the erased value (``0xFFFFFFFF``).
749
+
* Sets the secure vector table offset register (INITSVTOR) to point to the vector table address.
750
+
* Enables the CPU with the appropriate start mode:
751
+
752
+
* |ISE| enables the CPU in halted mode if any of the following conditions are met:
736
753
737
-
* Sets the application domain's INITSVTOR to the first 32-bit word of the application-owned memory.
738
-
* Reads the reset vector from the second 32-bit word of the application-owned memory.
739
-
* If the reset vector is set to 0xFFFFFFFF, sets CTRL_AP.BOOTSTATUS.BOOTERROR to indicate that no firmware is programmed.
740
-
* If any other error is encountered during initialization, sets CTRL_AP.BOOTSTATUS.BOOTERROR accordingly.
741
-
* If CTRL_AP.BOOTSTATUS.BOOTERROR is non-zero (meaning an invalid UICR configuration is detected), sets the application domain's CPUWAIT to 1; otherwise, sets it to 0.
742
-
* Sets the application domain's CPUSTART to 1.
743
-
* Stops the allocation procedure.
744
-
* Updates the boot report to indicate the UICR entry (and, if applicable, the array index) that triggered the failure.
745
-
* Sets CTRL_AP.BOOTSTATUS.BOOTERROR to indicate the source of the error.
746
-
* Starts the application core with application domain's CPUWAIT = 1 (halted mode).
754
+
* No firmware is available.
755
+
* Boot errors occurred.
756
+
* The ``DEBUGWAIT`` boot command was issued.
757
+
* Otherwise, |ISE| enables and starts the CPU normally.
747
758
748
-
This allows the error report to be read by a debugger, if the device is not protected.
759
+
* Updates :ref:`CTRL_AP.BOOTSTATUS <ug_nrf54h20_ironside_se_bootstatus_register_format>` and writes the :ref:`boot report <ug_nrf54h20_ironside_se_boot_report>` to reflect any boot errors encountered during the initialization process.
749
760
750
761
.. _ug_nrf54h20_ironside_se_secondary_firmware:
751
762
@@ -824,6 +835,7 @@ For details about the CPUCONF peripheral, refer to the nRF54H20 SoC datasheet.
824
835
825
836
|ISE| is updated by the Secure Domain ROM (SDROM), which performs the update operation when triggered by a set of SICR registers.
826
837
SDROM verifies and copies the update candidate specified through these registers.
838
+
SDROM requires the |ISE| update to be located in MRAM.
827
839
828
840
|ISE| exposes an update service that allows local domains to trigger the update process by indirectly writing to the relevant SICR registers.
829
841
@@ -864,8 +876,8 @@ When using the PSA Crypto API to operate on keys, the storage region specified b
864
876
865
877
This ensures that cryptographic keys are stored in the dedicated secure storage region rather than in regular application memory.
866
878
867
-
Secure storage through PSA Internal Trusted Storage (ITS) API
0 commit comments