Programming an application

For simplicity, this guide will refer to both samples and applications as “applications”.

To program the output build files to your device, which in most of the cases will be zephyr.hex or merged.hex, use the steps for the development environment.

Before you program a device in the nRF Connect for VS Code extension, you need to set up a build configuration, which is part of Building an application.

Complete the following steps to program the application:

  1. Connect the development kit to your PC using a USB cable.

  2. Power on the development kit.

  3. Make sure you are familiar with Hardware-specific programming steps.

  4. Open the nRF Connect extension in Visual Studio Code by clicking its icon in the Activity Bar.

  5. In the extension’s Actions View, click on Flash.

For instructions about programming with the nRF Connect for VS Code extension, see How to flash an application.

If you want to program with custom options or scripts, read about Binding custom tasks to actions in the extension documentation.

For information about how to flash and erase in the nRF Connect for VS Code extension, read about the Application-specific flash options.

The flash command programs all cores by default, both in the nRF Connect for VS Code extension and on the command line. If you want to program only one selected core, use west flash on the command line and specify the domain.

Hardware-specific programming steps

Some hardware has platform-specific requirements that must be met before you program the device. For additional information, check the user guide for the hardware platform that you are using.

For example, if you are working with an nRF9160 DK, you need to select the correct position of the board controller switch SW10 before you program the application to your development kit. Programming to Thingy:91 also requires a similar step, but using a different switch (SW2).

Programming the nRF52840 Dongle

To program the nRF52840 Dongle instead of a development kit, follow the programming instructions in nRF52840 Dongle or use the nRF Connect Programmer app.

Optional programming parameters

You can customize the basic west flash command in a variety of ways. The following are most common in the nRF Connect SDK. For more options, see Zephyr’s Flashing: west flash.

Programming without --erase

As an alternative to the recommended west flash --erase, you can also clear only those flash memory pages that are to be overwritten with the new application. With such approach, the old data in other areas will be retained.

To erase only the areas of flash memory that are required for programming the new application, use the following command:

west flash
Programming with --recover

Recovering a device typically refers to the process of resetting it to a known, working state, often by erasing and reprogramming its memory. This is usually done in the following cases:

  • The device is not functioning correctly.

  • The device is using a readback protection, such as the Access port protection mechanism (AP-Protect), offered by several Nordic Semiconductor SoCs or SiPs supported in the nRF Connect SDK. In such a case, you might get an error similar to the following message:

    ERROR: The operation attempted is unavailable due to readback protection in
    ERROR: your device. Please use --recover to unlock the device.
    

Use the following command to recover your device:

west flash --recover

This command erases all user-available non-volatile memory and disables the readback protection mechanism, if enabled.

The west flash --recover command uses one of the following background commands:

  • nrfjprog --recover for devices from nRF52, nRF53, and nRF91 Series.

  • nrfutil device recover for devices from nRF54H and nRF54L Series. For more information about how nrfutil device recover works, see the nRF Util documentation.