This is part 2 of the new award winning development IoT kit from Nordic NRF54LM20-DK Nordic Semiconductor ASA | Development Boards, Kits, Programmers | DigiKey
The objective of this article is to show how to setup this platform for Zephyr development purposes in a Linux environment. At this moment it will be configured similarly like a previous article. For now, this article will show how to develop in Zephyr with the CPU (ARM) section of this platform shown in the next block diagram,
We will show in the next article how to use Zephyr with the AXON Artificial Intelligence (AI) Neural Processor Unit (NPU). With this initial objective in mind, the first step, is to do the following in a Linux host,
sudo apt update
sudo apt upgrade
sudo apt install --no-install-recommends git cmake ninja-build gperf ccache dfu-util device-tree-compiler wget python3-dev python3-venv python3-tk xz-utils file make gcc libsdl2-dev libmagic1
python3 -m venv venv
source venv/bin/activate
(venv) pip install west
(venv) west init zephyrproject
(venv) cd zephyrproject
(venv) west update
(venv) west zephyr-export
(venv) west packages pip --install
(venv) cd zephyr
(venv) west sdk install
Install nrfutil from this link for Linux (x64). Once its downloaded change the permissions and execute it. (sudo chmod 777 nrfutil). Check the version and add it to the path in your system (.bashrc)
(venv) sudo apt install libusb-1.0-0
(venv) nrfutil self-upgrade
(venv) nrfutil install nrf5sdk-tools
(venv) nrfutil upgrade
(venv) nrfutil install sdk-manager
(venv) nrfutil install device
(venv) nrfutil sdk-manager install v3.2.0
Is very important to use nrfutil upgrade and this nrfutil sdk-manager install v3.2.0 command since it installs version 3.2.0 that works for this demo at this moment of the publication of this article. Also please download the following JLink_Linux_V864_x86_64.deb and install it. Now from the Zephyr directory ~/DigiKey_Coffee_Cup/Nordic/zephyrproject/zephyr
(venv)~/DigiKey_Coffee_Cup/Nordic/zephyrproject/zephyr$ nrfutil sdk-manager toolchain launch --ncs-version v3.2.0 --shell
this will open in the terminal another shell. At this moment, please proceed to build the Zephyr application for this new award winning NRF54LM20-DK Nordic Semiconductor Development Kit The demo application presented here is a Zephyr OS multi-thread demo. Now build Zephyr application as follows,
(venv)~/DigiKey_Coffee_Cup/Nordic/zephyrproject$ west build -p always -b nrf54lm20dk/nrf54lm20b/cpuapp zephyr/samples/basic/threads
...
...
[167/167] Linking C executable zephyr/zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 40996 B 2036 KB 1.97%
RAM: 8580 B 511 KB 1.64%
IDT_LIST: 0 B 32 KB 0.00%
Generating files from DigiKey_Coffee_Cup/Nordic/zephyrproject/build/zephyr/zephyr.elf for board: nrf54lm20dk/nrf54lm20b/cpuapp
After the build process is complete, connect the new award winning NRF54LM20-DK Nordic Semiconductor Development Kit via the USB cable from the Linux host as shown in the next picture,
Open a minicom in a separate terminal, and proceed to flash it in the system as follows,
(venv) ~/DigiKey/Nordic/zephyrproject$ west flash
- west flash: rebuilding
ninja: no work to do.
-- west flash: using runner nrfutil
-- runners.nrfutil: reset after flashing requested
Using board 001051861371
-- runners.nrfutil: Flashing file: DigiKey_Coffee_Cup/Nordic/zephyrproject/build/zephyr/zephyr.hex
-- runners.nrfutil: Connecting to probe
-- runners.nrfutil: Programming image
-- runners.nrfutil: Verifying image
-- runners.nrfutil: Reset
-- runners.nrfutil: Board(s) with serial number(s) 1051861371 flashed successfully.
The minicom terminal should display the following information,
The following video shows the multi-thread demo,
This demo shows spawning multiple threads using :c:func:K_THREAD_DEFINE. It spawns three threads. Each thread is then defined at compilation using the parameter K_THREAD_DEFINE. The first two threads each control an individual LED in the board. These LEDs, led0 and led1, have loop control and timing logic controlled by separate functions.
blink0()controlsled0and has a 100ms sleep cycleblink1()controlsled1and has a 1000ms sleep cycle
When either of these threads toggles its LED, it also pushes information into a FIFO buffer, identifying the thread/LED and how many times it has been toggled. The third thread uses :c:func:printk to print the information added to the FIFO to the minicom terminal.
This has completed the demonstration for this new Nordic IoT platform. Please stay tuned for our next part in this series. This new Embedded World 2026 award winning Nordic IoT NRF54LM20-DK development kit is available at DigiKey. Have a great day!
This article is available in spanish here.
Este artículo está disponible en español aquí.



