Getting started with the nRF54H20 DK
Note
If you are migrating from an earlier version of the nRF Connect SDK, see Migration guides.
This guide gets you started with your new nRF54H20 Development Kit (DK) using the nRF Connect SDK for the first time. It guides you through the following:
Installing the nRF Connect SDK and other required software and tools.
Preparing the nRF54H20 DK for first use:
Disabling the onboard debugger’s USB Mass Storage Device (MSD) feature and forcing UART hardware flow control (HWFC).
Programming the nRF54H20 DK’s Board Information Configuration Registers (BICR) using the provided binary file.
Programming the Secure Domain and System Controller of the nRF54H20 SoC using the provided IronSide SE binaries.
Transitioning the SoC’s lifecycle state (LCS) to Root of Trust (RoT).
Programming the Hello World for multiple board targets using Sysbuild sample on the DK.
Testing the sample by capturing and reviewing the UART console output.
Hardware requirements
To follow this guide, make sure you have all the required hardware:
nRF54H20 DK version PCA10175 Engineering C - v0.9.0 and later DK revisions in lifecycle state (LCS)
EMPTY(new DKs will always be in LCSEMPTY). Check the version number on your DK’s sticker to verify its compatibility with the nRF Connect SDK.USB-C cable.
Installing the nRF Connect SDK
Install the nRF Connect SDK following the instructions for both nRF Connect for VS Code and the command line in the Installing the nRF Connect SDK documentation page.
Installing additional nRF Util commands
After installing the nRF Connect SDK and its toolchain, you get the 8.1.1 version of nRF Util core module (nrfutil).
Using the nRF54H20 DK with the nRF Connect SDK version v3.3.0 also requires the following nRF Util components:
nRF Util component |
Required version |
|---|---|
nRF Util ( |
Latest |
nRF Util |
version 2.17.2 |
nRF Util |
version 4.4.0 |
To install the required versions of the nRF Util commands, complete the following steps:
Update your existing nRF Util installation:
Make sure you have removed the lock on the nRF Util installation to be able to install other nRF Util commands. See Locking nRF Util home directory in the tool documentation for more information.
Run the following command to update the core module to the latest version:
nrfutil self-upgrade
For more information, consult the Upgrading nRF Util core module documentation.
Install the required versions of the nRF Util commands:
nrfutil install device=2.17.2 --force nrfutil install trace=4.4.0 --force
For more information, see the Installing specific versions of nRF Util commands documentation.
Verify the installation of the nRF Util commands:
nrfutil device --version nrfutil trace --version
The output will show the installed versions. Ensure they match the required versions.
Installing a terminal application
Install a terminal emulator, such as the Serial Terminal app (from the nRF Connect for Desktop application) or the nRF Terminal (part of the nRF Connect for Visual Studio Code extension). Both of these terminal emulators start the required toolchain environment.
Bring-up step: Disable onboard J-Link Mass Storage Device (MSD)
The onboard debugger enables a USB Mass Storage Device (MSD) by default so you can drag and drop firmware images onto the probe. The nRF54H20 DK does not support drag-and-drop programming through MSD, so it is recommended to disable MSD.
You should also force UART hardware flow control (HWFC) on the debugger’s virtual serial port to avoid potential race conditions related to HWFC auto-detection.
Note
You need the J-Link Software and Documentation Pack installed (included with the nRF Connect SDK toolchain).
To disable MSD and force HWFC:
Connect the nRF54H20 DK to your computer with a USB cable using the DEBUGGER port on the DK.
Run J-Link Commander. The configuration window appears.
From the Specify Target Device dropdown menu, select the nRF54H20 device entry that matches your kit and J-Link version.
For a new DK in lifecycle state (LCS)
EMPTY, this is typicallyNRF54H20_SECURE. After you transition the SoC to Root of Trust (RoT),NRF54H20_APPis typically used.From the Target Interface & Speed dropdown menu, select SWD.
After J-Link Commander connects, enter the following commands at the
J-Link>prompt.To disable MSD:
MSDDisable
To force HWFC:
SetHWFC Force
Power cycle the board using the POWER on/off switch on the DK.
To disable MSD, force HWFC, or both:
Connect the nRF54H20 DK to your computer with a USB cable using the DEBUGGER port on the DK.
Run
JLinkExeto connect to the target. For example, for a new DK in LCSEMPTY(device name can differ slightly between J-Link releases):JLinkExe -device NRF54H20_SECURE -if SWD -speed 4000 -autoconnect 1 -SelectEmuBySN <SEGGER_ID>
Replace
<SEGGER_ID>with the serial number of your onboard J-Link probe (see the sticker on the DK or usenrfutil device list). After RoT transition, you can useNRF54H20_APPinstead ofNRF54H20_SECUREif required for a successful connection.At the
J-Link>prompt, run the following commands as needed.To disable MSD:
MSDDisable
To force HWFC:
SetHWFC Force
Power cycle the board using the POWER on/off switch on the DK.
Bring-up step: Programming the BICR
The Board Information Configuration Registers (BICR) are non-volatile memory (NVM) registers that contain information on how the nRF54H20 SoC must interact with other board elements, including information about power and clock delivery to the SoC.
To prepare the nRF54H20 DK for its first use, you must manually program the required values into the BICR using a precompiled BICR binary file (bicr.hex).
Download the nRF54H20 DK BICR binary file.
Connect the nRF54H20 DK to your computer using the DEBUGGER port on the DK.
Note
On macOS, when connecting the DK, you might see a popup with the message
Disk Not Ejected Properlyappearing multiple times. See Bring-up step: Disable onboard J-Link Mass Storage Device (MSD) to disable MSD on the onboard debugger.List all the connected development kits to see their serial number (matching the one on the DK’s sticker):
nrfutil device list
Move the BICR HEX file to a folder of your choice, then program the BICR by running nRF Util from that folder using the following command:
nrfutil device program --options chip_erase_mode=ERASE_NONE --firmware bicr.hex --core Application --serial-number <serial_number>
Note
After you program the BICR, the LFCLK calibrates on first boot. Do not expect accurate LFCLK timing for about 3.5 to 4 seconds. If calibration does not complete, the system controller (sysctrl) starts calibration on the next boot.
Bring-up step: Programming the nRF54H20 IronSide SE binaries
After programming the BICR, the nRF54H20 SoC requires the provisioning of the nRF54H20 IronSide SE binaries, a bundle containing the precompiled firmware for the Secure Domain and System Controller.
Note
To program the nRF54H20 IronSide SE binaries on your nRF54H20 SoC-based device, your device must be in lifecycle state (LCS) EMPTY.
This means that this is likely the first use of your nRF54H20 DK.
Devices already provisioned using SUIT-based binaries and in LCS RoT cannot be transitioned back to LCS EMPTY.
For more information, see IronSide SE ABI compatibility.
To provision the nRF54H20 IronSide SE binaries to the nRF54H20 SoC, complete the following steps:
Download the latest nRF54H20 IronSide SE binaries. You can find the version compatible with your nRF Connect SDK version listed on the IronSide SE ABI compatibility page.
Note
On MacOS, ensure that the ZIP file is not unpacked automatically upon download.
Move the
.zipbundle to a folder of your choice, then run nRF Util to program the binaries using the following command:nrfutil device x-provision-nrf54h --firmware <path-to_bundle_zip_file> --serial-number <serial_number>
Bring-up step: Transitioning the nRF54H20 SoC to RoT
The nRF54H20 SoC comes with its lifecycle state (LCS) set to EMPTY.
To operate correctly, you must transition its lifecycle state to Root of Trust (RoT).
Caution
The forward transition to LCS RoT is permanent.
After the transition, you cannot transition backward to LCS EMPTY.
To transition the LCS to RoT, do the following:
Set the LCS of the nRF54H20 SoC to
RoTusing the following command:nrfutil device x-adac-lcs-change --life-cycle rot --serial-number <serial_number>
If issues occur during bundle programming, the system returns an
ADAC_FAILUREerror.After the LCS transition, reset the device:
nrfutil device reset --reset-kind RESET_PIN --serial-number <serial_number>
Building and programming your first sample to the nRF54H20 DK
The Hello World for multiple board targets using Sysbuild sample is a multicore sample running on both the application core (cpuapp) and the Peripheral Processor (PPR, cpuppr).
It uses the nrf54h20dk/nrf54h20/cpuapp board target.
To build and program the sample to the nRF54H20 DK, complete the following steps:
Connect the nRF54H20 DK to your computer using the DEBUGGER port on the DK.
Start the toolchain environment for your operating system using the following command pattern, with
--ncs-versioncorresponding to the nRF Connect SDK version you have installed:nrfutil sdk-manager toolchain launch --ncs-version version --terminal
For example:
nrfutil sdk-manager toolchain launch --ncs-version v3.3.0 --terminal
This example command starts the toolchain environment for the nRF Connect SDK v3.3.0.
nrfutil sdk-manager toolchain launch --ncs-version version --shell
For example:
nrfutil sdk-manager toolchain launch --ncs-version v3.3.0 --shell
This example command starts the toolchain environment for the nRF Connect SDK v3.3.0.
nrfutil sdk-manager toolchain launch --ncs-version version --shell
For example:
nrfutil sdk-manager toolchain launch --ncs-version v3.3.0 --shell
This example command starts the toolchain environment for the nRF Connect SDK v3.3.0.
In the terminal window, navigate to the
zephyr/samples/sysbuild/hello_worldfolder containing the sample.Run the following command to build the sample for application and radio cores:
west build -p -b nrf54h20dk/nrf54h20/cpuapp -T sample.sysbuild.hello_world.nrf54h20dk_cpuapp_cpurad .
Program the sample to the DK. If you have multiple Nordic Semiconductor devices, ensure that only the nRF54H20 DK you want to program remains connected.
west flashThis command programs both the application core and the Peripheral Processor (PPR) of the nRF54H20 SoC.
Testing your first sample on the nRF54H20 DK
Now that the Hello World for multiple board targets using Sysbuild sample is programmed, verify its operation by capturing the UART logs from both the application core and the peripheral processor:
Connect to the DK with a terminal emulator (for example, the Serial Terminal app) using the default serial port connection settings.
Press the Reset button on the PCB to reset the DK.
Observe the console output for the application core:
*** Booting nRF Connect SDK zephyr-v3.5.0-3517-g9458a1aaf744 *** Hello world from nrf54h20dk/nrf54h20/cpuapp
Note
If no output appears when using nRF Serial Terminal, select a different serial port in the terminal application.
For more information on how logging works in the nRF Connect SDK, consult the Logging in nRF Connect SDK and Logging documentation pages.
Next steps
You are now all set to use the nRF54H20 DK. See the following links for where to go next:
nRF54H20 architecture for information about the multicore System on Chip. This includes descriptions of core responsibilities, their interprocessor interactions, memory mapping, and the boot sequence.
The introductory documentation for more information on the nRF Connect SDK and the development environment.
Configuring and building documentation to learn more about the nRF Connect SDK development environment.
Developing with nRF54H Series documentation for more advanced topics related to the nRF54H20.
Security documentation for information on security features available in the nRF Connect SDK.
If you want to go through an online training course to familiarize yourself with Bluetooth® Low Energy and the development of Bluetooth LE applications, enroll in the Bluetooth LE Fundamentals course in the Nordic Developer Academy.