🛠 Zephyr RTOS sur la STM32F4DISCOVERY : west build et west flash

STM32F4DISCOVERY (kit Discovery STM32F407VGT6) · debutant · Schéma : flux de compilation Zephyr pour la carte stm32f4_disco — ligne de commande west build, fichier .elf produit, puis west flash via le ST-LINK/V2-A intégré ; la LED LD4 verte (PD12) clignote sur la carte.

Objectif

Monter un flux de développement professionnel sur la STM32F4DISCOVERY avec Zephyr RTOS, qui supporte officiellement la carte sous le nom stm32f4_disco. Vous allez compiler l'exemple blinky, le flasher par le ST-LINK/V2-A embarqué, et comprendre pourquoi la console série ne marche pas par défaut.

Matériel

Compilation et flash

# Une fois l'espace de travail Zephyr installé (west init / west update) :
west build -b stm32f4_disco samples/basic/blinky
west flash

Le runner par défaut est STM32CubeProgrammer, qui parle au ST-LINK/V2-A de la carte. Alternatives documentées : west flash --runner openocd (OpenOCD fournit un fichier de carte prêt à l'emploi, stm32f4discovery.cfg, en SWD avec srst_only) ou --runner jlink.

Le code

/* blinky — build: west build -b stm32f4_disco samples/basic/blinky */
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>

#define LED_NODE DT_ALIAS(led0)

int main(void)
{
        const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED_NODE, gpios);

        gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
        while (1) {
                gpio_pin_toggle_dt(&led);
                k_msleep(500);
        }
        return 0;
}

Zephyr utilise le Device Tree : DT_ALIAS(led0) désigne la LED utilisateur définie dans la description de la carte, pas un numéro de broche codé en dur. Les quatre LED physiques sont LD4 (verte, PD12), LD3 (orange, PD13), LD5 (rouge, PD14) et LD6 (bleue, PD15) — la carte en compte huit au total avec LD1 (USB), LD2 (alimentation 3,3 V) et LD7/LD8 (VBUS/surtension OTG).

La console : le piège à connaître

Les réglages série par défaut de Zephyr sont 115200 8N1, mais la documentation de la carte avertit : le port série virtuel du ST-LINK n'est pas relié au port série de la puce. Pour de la sortie console, prévoyez un câble série externe sur les broches UART2, PA2/PA3. Sans cela, printk part dans le vide — c'est le point de confusion n°1 des débutants sur cette carte.

Vérification attendue

Après west flash, la LED clignote à 1 Hz (500 ms ON / 500 ms OFF) et la commande affiche Halting target CPU... puis Successfully programmed. La carte tourne à 168 MHz (horloge système configurée depuis le quartz HSE 8 MHz par la configuration de la carte).

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels