Getting started with the nRF54H20 DK

This section gets you started with your nRF54H20 Development Kit (DK) using the nRF Connect SDK. It tells you how to install the Multicore Hello World application sample and perform a quick test of your DK.

If you have already set up your nRF54H20 DK and want to learn more, see the following documentation:

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.

Minimum requirements

Make sure you have all the required hardware and that your computer has one of the supported operating systems.

Hardware

  • nRF54H20 DK version PCA10175 v0.7.x or v0.8.0 (ES3). Check the version number on your DK’s sticker to verify its compatibility with nRF Connect SDK version 2.6.99-cs2.

  • USB-C cable.

Software

On your computer, one of the following operating systems:

  • Microsoft Windows

  • Ubuntu Linux

  • macOS

The operating system versions that support the nRF Connect SDK tools are listed in the Supported operating systems section.

You also need the following:

Note

The SEGGER USB Driver for J-Link is not included in J-Link v7.94e. To install the driver, do the following:

  1. Install J-Link version 7.88j When installing SEGGER J-Link 7.88j on Windows, select the following optional components in the installer:

    • Install USB Driver for J-Link (requires admin rights).

    • Under Choose destination, select Install a new instance.

    See the following screenshot:

    Optional components in the J-Link v7.88j installation
  2. Update to J-Link version 7.94e When updating SEGGER J-Link to version 7.94e on Windows, select Update existing installation under Choose destination in the choose optional components window.

    See the following screenshot:

    Optional components in the J-Link v7.94e installation

Installing the required software

To work with the nRF54H20 DK, follow the instructions in the next sections to install the required tools.

Installing the toolchain

You can install the toolchain for the customer sampling of the nRF Connect SDK by running an installation script. Follow these steps:

  1. Open Git Bash.

  2. Download and run the bootstrap-toolchain.sh installation script file using the following command:

    curl --proto '=https' --tlsv1.2 -sSf https://files.nordicsemi.com/artifactory/swtools/external/scripts/bootstrap-toolchain.sh | NCS_TOOLCHAIN_VERSION=v2.6.99-cs2 sh
    

    Depending on your connection, this might take some time.

  3. Open a new terminal window with the nRF Connect SDK toolchain environment by running the following command:

    c:/ncs-lcs/nrfutil.exe toolchain-manager launch --terminal --chdir "c:/ncs-lcs/work-dir" --ncs-version v2.6.99-cs2
    

    This setup allows you to access west and other development tools. Alternatively, you can set up the environment variables manually by running the following command:

    c:/ncs-lcs/nrfutil.exe toolchain-manager env --as-script
    

    Copy-paste the output into the terminal and execute it to enable the use of west directly in that window.

    Note

    WWhen working with west in the customer sampling release, you must always use a terminal window with the nRF Connect SDK toolchain environment.

If you run into errors during the installation process, delete the .west folder inside the C:\ncs-lcs directory, and start over.

We recommend adding the nRF Util path to your environmental variables.

Installing the nRF Connect SDK

After you have installed the toolchain, complete the following steps to get the customer sampling version of the nRF Connect SDK:

  1. In the terminal window opened during the toolchain installation, initialize west with the revision of the nRF Connect SDK from the customer sampling:

    west init -m https://github.com/nrfconnect/sdk-nrf --mr v2.6.99-cs2
    
  2. Enter the following command to clone the project repositories:

    west update
    

    Depending on your connection, this might take some time.

  3. Export a Zephyr CMake package. This allows CMake to automatically load the boilerplate code required for building nRF Connect SDK applications:

    west zephyr-export
    

Your directory structure now looks similar to this:

ncs-lcs/work-dir
|___ .west
|___ bootloader
|___ modules
|___ nrf
|___ nrfxlib
|___ zephyr
|___ ...

Note that there are additional folders, and that the structure might change. The full set of repositories and folders is defined in the manifest file.

Installing the Terminal application

On your computer, install nRF Connect for Desktop. You must also install a terminal emulator, such as nRF Connect Serial Terminal (from the nRF Connect for Desktop application) or the nRF Terminal (part of the nRF Connect for Visual Studio Code extension).

nRF54H20 DK bring-up

The following sections describe the steps required for the nRF54H20 bring-up.

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 the information about the power and clock delivery to the SoC. To prepare the nRF54H20 DK for first use, you must manually program the values of the BICR using a precompiled BICR binary file (bicr_ext_loadcap.hex).

  1. Download the BICR binary file .

  2. List all the connected development kits to see their serial number (matching the one on the DK’s sticker):

    nrfutil device list
    
  3. 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_ext_loadcap.hex --core Secure --serial-number <serial_number>
    

Programming the SDFW and SCFW

After programming the BICR, the nRF54H20 SoC requires the provisioning of a bundle ( nrf54h20_soc_binaries_v0.3.3.zip) containing the precompiled firmware for the Secure Domain and System Controller. To program the Secure Domain Firmware (SDFW, also known as urot) and the System Controller Firmware (SCFW) from the firmware bundle to the nRF54H20 DK, do the following:

  1. Download the nRF54H20 firmware bundle.

  2. Move the ZIP bundle 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>
    

Updating the FICR

After programming the SDFW and SCFW from the firmware bundle, you must update the Factory Information Configuration Registers (FICR) to correctly configure some trims of the nRF54H20 SoC. To update the FICR, you must run a J-Link script:

  1. Get the Jlink script that updates the FICR:

    curl -LO https://files.nordicsemi.com/artifactory/swtools/external/scripts/nrf54h20es_trim_adjust.jlink
    
  2. Run the script:

    JLinkExe -CommanderScript nrf54h20es_trim_adjust.jlink
    

Transitioning the nRF54H20 SoC to RoT

The current nRF54H20 DK is delivered with its lifecycle state (LCS) set to EMPTY. To correctly operate, its lifecycle state must be transitioned to Root of Trust (RoT).

Note

The forward transition to LCS RoT is permanent. After the transition, it is not possible to transition backward to LCS EMPTY.

To transition the LCS to RoT, do the following:

  1. Verify the current lifecycle state of the nRF54H20:

    nrfutil device x-adac-discovery --serial-number <serial_number>
    

    The output will look similar to the following:

    *serial_number*
    adac_auth_version     1.0
    vendor_id             Nordic VLSI ASA
    soc_class             0x00005420
    soc_id                [e6, 6f, 21, b6, dc, be, 11, ee, e5, 03, 6f, fe, 4d, 7b, 2e, 07]
    hw_permissions_fixed  [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
    hw_permissions_mask   [01, 00, 00, 00, 87, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
    psa_lifecycle         LIFECYCLE_EMPTY (0x1000)
    sda_id                0x01
    secrom_revision       0xad3b3cd0
    sysrom_revision       0xebc8f190
    token_formats         [TokenAdac]
    cert_formats          [CertAdac]
    cryptosystems         [Ed25519Sha512]
    Additional TLVs:
    TargetIdentity: [ff, ff, ff, ff, ff, ff, ff, ff]
    
  2. If the lifecycle state (psa_lifecycle) shown is RoT (LIFECYCLE_ROT (0x2000)), no LCS transition is required. If the lifecycle state (psa_lifecycle) shown is not RoT (LIFECYCLE_EMPTY (0x1000) means the LCS is set to EMPTY), set it to Root of Trust using the following command:

    nrfutil device x-adac-lcs-change --life-cycle rot --serial-number <serial_number>
    
  3. Verify again the current lifecycle state of the nRF54H20:

    nrfutil device x-adac-discovery --serial-number <serial_number>
    

    The output will look similar to the following:

    *serial_number*
    adac_auth_version     1.0
    vendor_id             Nordic VLSI ASA
    soc_class             0x00005420
    soc_id                [e6, 6f, 21, b6, dc, be, 11, ee, e5, 03, 6f, fe, 4d, 7b, 2e, 07]
    hw_permissions_fixed  [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
    hw_permissions_mask   [01, 00, 00, 00, 87, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00]
    psa_lifecycle         LIFECYCLE_ROT (0x2000)
    sda_id                0x01
    secrom_revision       0xad3b3cd0
    sysrom_revision       0xebc8f190
    token_formats         [TokenAdac]
    cert_formats          [CertAdac]
    cryptosystems         [Ed25519Sha512]
    Additional TLVs:
    TargetIdentity: [ff, ff, ff, ff, ff, ff, ff, ff]
    

    The lifecycle state (psa_lifecycle) is now correctly set to Root of Trust (LIFECYCLE_ROT (0x2000))

  4. After the LCS transition, reset the device:

    nrfutil device reset --reset-kind RESET_PIN --serial-number <serial_number>
    

Programming the sample

The Multicore Hello World application sample is a multicore sample running on both the Application Core (cpuapp) and the Peripheral Processor (PPR, cpuppr). It uses the nrf54h20dk_nrf54h20_cpuapp build target.

To build and program the sample to the nRF54H20 DK, complete the following steps:

  1. Connect the nRF54H20 DK to your computer using the DEBUGGER port on the DK.

  2. Navigate to the nrf/samples/multicore/hello_world folder containing the sample.

  3. Build the sample for application and radio cores by running the following command:

    west build -p -b nrf54h20dk_nrf54h20_cpuapp -T sample.multicore.hello_world.nrf54h20dk_cpuapp_cpurad .
    
  4. Alternatively, build the sample for the application and PPR cores by running the following command:

    west build -p -b nrf54h20dk_nrf54h20_cpuapp -T sample.multicore.hello_world.nrf54h20dk_cpuapp_cpuppr .
    
  5. Program the sample. If you have multiple Nordic Semiconductor devices, make sure that only the nRF54H20 DK you want to program is connected.

    west flash
    

The sample will be automatically built and programmed on both the Application Core and the Peripheral Processor (PPR) of the nRF54H20.

Note

Programming the nRF54H20 SoC can sometimes fail due to conflicts in the resource configuration. This can happen if, for example, an application programmed to the nRF54H20 SoC configured the UICRs for one or more cores in a way that is incompatible with the configuration required by the application you are trying to program on the SoC.

To fix this error and erase the UICRs, run the following commands:

nrfutil device x-boot-mode-set --boot-mode safe --serial-number <serial_number>
nrfutil device erase --all --serial-number <serial_number> --core Application
nrfutil device erase --all --serial-number <serial_number> --core Network
nrfutil device x-boot-mode-set --boot-mode normal --serial-number <serial_number>

You can then run west flash to program your application.

Reading the logs

With the Multicore Hello World application sample programmed, the nRF54H20 DK outputs logs for the Application Core and the configured remote processor. The logs are output over UART.

To read the logs from the Multicore Hello World application sample programmed to the nRF54H20 DK, complete the following steps:

  1. Connect to the DK with a terminal emulator (for example, nRF Connect Serial Terminal) using the default serial port connection settings.

  2. Press the Reset button on the PCB to reset the DK.

  3. Observe the console output for both cores:

    • For the Application Core, the output should look like the following:

      *** Booting nRF Connect SDK zephyr-v3.5.0-3517-g9458a1aaf744 ***
      Hello world from nrf54h20dk/nrf54h20/cpuapp
      Hello world from nrf54h20dk/nrf54h20/cpuapp
      ...
      
    • For the remote core, like PPR, the output should be as follows:

      *** Booting nRF Connect SDK zephyr-v3.5.0-3517-g9458a1aaf744 ***
      Hello world from nrf54h20dk/nrf54h20/cpuppr
      Hello world from nrf54h20dk/nrf54h20/cpuppr
      ...
      

Note

If no output is shown 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:

  • Architecture of nRF54H20 for information about the multicore System on Chip, such as the responsibilities of the cores and their interprocessor interactions, the memory mapping, and the boot sequence.

  • The introductory documentation for more information on the nRF Connect SDK and the development environment.