🛠 Monter un projet Zephyr complet avec PlatformIO

nRF52840-MDK (id boards.json: nrf52840-mdk) · intermediaire · Une seule ligne de config et PlatformIO livre le compilateur, le framework Zephyr et le flashage CMSIS-DAP pour le nRF52840-MDK.

¿Por qué PlatformIO?

PlatformIO encapsula toda la cadena (GCC Arm, GDB, pyOCD, framework Zephyr) para la placa nrf52840_mdk de la plataforma nordicnrf52. La ficha oficial de la placa indica la sonda integrada y la mención « IS READY for debugging »; los protocolos de subida disponibles son cmsis-dap (predeterminado, la sonda DAPLink de la placa), blackmagic, jlink, mbed, nrfjprog y stlink.

Paso 1 — Instalar PlatformIO

curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -o get-platformio.py
python3 get-platformio.py
# ou plus simple : pip install platformio
pio --version

Paso 2 — Esqueleto del proyecto

mkdir mdk-zephyr && cd mdk-zephyr
pio project init --board nrf52840_mdk

Luego el platformio.ini recomendado por la ficha de Board Manager:

[env:nrf52840_mdk]
platform  = nordicnrf52
board     = nrf52840_mdk
framework = zephyr

; la sonde DAPLink embarquée parle CMSIS-DAP (défaut) ;
; une sonde externe fonctionne aussi : jlink / nrfjprog / mbed
upload_protocol = cmsis-dap

; rappels du manifeste de carte (déjà cohérents par défaut)
board_build.mcu   = nrf52840
board_build.f_cpu = 64000000L

Paso 3 — El código fuente

En src/main.c, el devicetree de la placa proporciona el alias led0 (LED RGB) y button0 (botón de usuario):

#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>

static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(DT_ALIAS(led0), gpios);

int main(void)
{
        gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
        while (1) {
                gpio_pin_toggle_dt(&led);
                k_msleep(500);
        }
}

Un archivo prj.conf vacío es suficiente para este ejemplo; es aquí donde se añaden CONFIG_BT=y, etc. posteriormente.

Paso 4 — Compilación, grabación y consola

pio run                 # compile
pio run -t upload       # flashe via cmsis-dap
pio device monitor      # console CDC du DAPLink

Depuración

debug_tool = cmsis-dap en el entorno habilita los puntos de interrupción desde VS Code. Evitar: OpenOCD con la sonda integrada — el mantenedor del BSP Rust nunca logró hacerlo funcionar con OpenOCD de Ubuntu 18.04 y cambió a J-Link; PlatformIO utiliza pyOCD, lo cual funciona.

Trampas

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales