🛠 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.

Pourquoi PlatformIO ?

PlatformIO encapsule toute la chaîne (GCC Arm, GDB, pyOCD, framework Zephyr) pour la carte nrf52840_mdk de la plateforme nordicnrf52. La fiche officielle de la carte indique la sonde embarquée et la mention « IS READY for debugging » ; les protocoles d'upload disponibles sont cmsis-dap (défaut, la sonde DAPLink de la carte), blackmagic, jlink, mbed, nrfjprog et stlink.

Étape 1 — Installer 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

Étape 2 — Squelette du projet

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

Puis le platformio.ini recommandé par la fiche 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

Étape 3 — Le source

Dans src/main.c, le devicetree de la carte fournit l'alias led0 (LED RGB) et button0 (bouton utilisateur) :

#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 fichier prj.conf vide suffit pour ce sample ; c'est là que s'ajoutent CONFIG_BT=y etc. ensuite.

Étape 4 — Build, flash, console

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

Débogage

debug_tool = cmsis-dap dans l'environnement active les points d'arrêt depuis VS Code. À éviter : OpenOCD avec la sonde embarquée — le mainteneur du BSP Rust n'a jamais réussi avec l'OpenOCD d'Ubuntu 18.04 et est passé à J-Link ; PlatformIO utilise pyOCD, ce qui fonctionne.

Pièges

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels