La nueva plataforma de Nordic AI IoT kit
NRF54LM20-DK Nordic Semiconductor ASA | Development Boards, Kits, Programmers | DigiKey se puede utilizar con el lenguaje de Rust,
Aqui vamos a describir como configurar esta plataforma de desarrollo dentro de una computadora con Linux para desarrollar dentro del sistema Zephyr una aplicación básica de Rust. Primero se procede a instalar Rust en Linux como se ve a continuación,
Digikey_Coffee_Cup# curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Ahora vamos a crear una aplicación para probar la instalación en una computadora de Linux en su directorio de preferencia,
Digikey_Coffee_Cup# cargo new hello-rust
esto va a crear el siguiente directorio hello-rust
.
└── hello-rust
├── Cargo.toml
└── src
└── main.rs
Ahora navege a el directorio hello-rust y corra la aplicación de Rust como sigue,
Digikey_Coffee_Cup@hello-rust# cargo run
Compiling hello-rust v0.1.0 (..../hello-rust)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.15s
Running `target/debug/hello-rust`
Hello, world!
El código de Rust main.rs es el siguiente,
fn main() {
println!("Hello, world!");
}
Esto es el básico programa en Rust en este punto. Ahora que hemos instalado a Rust apropiadamente en la computadora de Linux, use uno de los previos artículos para instalar apropiadamente los requisitos de Zephyr (Like this one here) antes de continuar con los próximos pasos. Primero navegue al directorio de Zephyr de la nueva plataforna AI IoT de Nordic NRF54LM20-DK Nordic Semiconductor ASA | Development Boards, Kits, Programmers | DigiKey y use los siguientes comandos,
(venv) DigiKey_Coffee_Cup# west config manifest.project-filter +zephyr-lang-rust
entonces,
(venv) DigiKey_Coffee_Cup# west update
En este punto hemos incluido el lenguage Rust en Zephyr en esta plataforma. Se procede a crear el siguiente directorio dentro del directorio samples de la instalación existente de Zephyr y se crea este nuevo directorio hello_world-rust,
(venv) DigiKey_Coffee_Cup# zephyr/zephyrproject/ mkdir samples/hello_world-rust
Se crea el siguiente archivo CMakeLists.txt dentro de ese directorio,
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(hello_rust_world)
rust_cargo_application()
También se incluye el archivo requerido por Rust Cargo.toml mostrado aquí,
# Copyright (c) 2024 Linaro LTD
# SPDX-License-Identifier: Apache-2.0
[package]
# This must be rustapp for now.
name = "rustapp"
version = "0.1.0"
edition = "2021"
description = "A sample hello world application in Rust"
license = "Apache-2.0 or MIT"
[lib]
crate-type = ["staticlib"]
[dependencies]
zephyr = "0.1.0"
log = "0.4.22"
Es ese directorio también se incluye el siguiente archivo proj.conf con estos parámetros de Zephyr,
# Copyright (c) 2024 Linaro LTD
# SPDX-License-Identifier: Apache-2.0
# The default 1k stack isn't large enough for rust string formatting with logging.
CONFIG_MAIN_STACK_SIZE=4096
CONFIG_RUST=y
CONFIG_RUST_ALLOC=y
CONFIG_LOG=y
CONFIG_LOG_BACKEND_RTT=n
en el directorio src se crea el siguiente archivo que es el código de Rust para este demo denominado lib.rs,
// Copyright (c) 2024 Linaro LTD
// SPDX-License-Identifier: Apache-2.0
#![no_std]
use log::info;
#[no_mangle]
extern "C" fn rust_main() {
unsafe {
zephyr::set_logger().unwrap();
}
info!("DigiKey Coffee Cup: Hello world from Rust on {}", zephyr::kconfig::CONFIG_BOARD);
}
En esta etapa el directorio hello_world-rust debe de ser como una aplicación típica de Rust,
├── Cargo.lock
├── Cargo.toml
├── CMakeLists.txt
├── prj.conf
└── src
└── lib.rs
Finalmente se contruye la aplicación de Rust usando el conocido metodo de Zephyr,
(venv) DigiKey_Coffee_Cup# zephyr/zephyrproject/ west build -p always -b nrf54lm20dk/nrf54lm20b/cpuapp zephyr/samples/hello_world-rust/
...
....
Compiling rustapp v0.1.0
(/zephyr/zephyrproject/zephyr/samples/hello_world-rust)
Finished `release` profile [optimized] target(s) in 1m 08s
[176/176] Linking C executable zephyr/zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 54700 B 2036 KB 2.62%
RAM: 11184 B 511 KB 2.14%
IDT_LIST: 0 B 32 KB 0.00%
Generating files from /zephyr/zephyrproject/build/zephyr/zephyr.elf for board: nrf54lm20dk/nrf54lm20b/cpuapp
Se procede a conectar la plataforma ganadora del premio de Embedded World 2026 de Nordic NRF54LM20-DK Nordic Semiconductor Development Kit via el cable de USB cable desde la computadora de Linux como se muestra aqui,
Para completar este Zephyr Rust demo, programe el Nordic NRF54LM20-DK Nordic Semiconductor ASA | Development Boards, Kits, Programmers | DigiKey asi,
(venv) DigiKey_Coffee_Cup# zephyr/zephyrproject/ west flash
-- west flash: rebuilding
[0/8] Building Rust application
...
...
Finished `release` profile [optimized] target(s) in 0.05s
-- west flash: using runner nrfutil
-- runners.nrfutil: reset after flashing requested
Using board 001051861371
-- runners.nrfutil: Flashing file:/zephyr/zephyproject/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.
Abra un terminal de minicom,
DigiKey_Coffee_Cup# minicom -D /dev/ttyACM1
oprima el boton de RESET en la plataforma y entonces el desarrollador de Rust debe de ver el siguiente mensaje,
Welcome to minicom 2.10
OPTIONS: I18n
Port /dev/ttyACM1, 14:41:20 [U]
Press CTRL-A Z for help on special keys
*** Booting Zephyr OS build v4.4.0-rc3 ***
[00:00:00.002,092] <inf> rust: rustapp: DigiKey Coffee Cup: Hello world from Rust on nrf54lm20dk
Esto ha completado la demostración de como se puede configurar la plataforma en Linux para esta nueva plataforma de AI Iot de Nordic. Por favor mantengase sintonizado para la próxima parte en esta serie. Esta nueva platforma AI IoT ganadora del premio de Embedded World 2026 de Nordic AI Axon NPU IoT NRF54LM20-DK esta disponible en DigiKey.
Que tenga un excelente dia
Este artículo esta disponible en inglés aqui.
This article is available in english here.

