🛠 Le core Zephyr : sketches ELF chargés à chaud via llext (fin du reflash complet)

Arduino Portenta H7 · avance · Schéma : IMG-portenta-h7-avance-2-portenta-h7-zephyr-llext.svg — architecture du core Zephyr sur Portenta H7 : loader Zephyr précompilé en bas, sketch compilé en ELF chargé dynamiquement par llext au-dessus, flèche d'upload sans reset, terminal Zephyr shell affichant la commande sketch

Objectifs

Le core ArduinoCore-zephyr est appelé à remplacer le core Mbed sur tous les appareils qu'il supporte, Portenta H7 comprise. Son idée : un loader Zephyr précompilé reste sur la carte, et ton sketch — compilé en ELF autonome — est chargé à chaud par llext, sans reflash complet ni reset. Depuis la release 0.90.0 du core, le loader s'installe automatiquement au premier upload. Tu vas installer le core, comprendre le modèle de chargement, et utiliser le Zephyr shell en mode Debug pour diagnostiquer les échecs de chargement.

Matériel

Code complet

// zephyr_blink.ino — API Arduino standard sur Zephyr RTOS
// 1. Installe "Arduino Zephyr Boards" dans le Board Manager
// 2. Choisis Portenta H7 ; le premier upload installe le loader
//    automatiquement (core >= 0.90.0, cible arduino_portenta_h7//m7)
// 3. Les uploads suivants chargent le sketch sans reset complet.
#include <Arduino.h>

void setup {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(200);
  digitalWrite(LED_BUILTIN, LOW);
  delay(800);
}
// Astuce du README : compiler en mode Debug pour obtenir le Zephyr
// shell sur la série par defaut, puis la commande `sketch` lit les
// erreurs de chargement llext.

Vérification attendue

Après le premier upload (installation du loader), les suivants sont quasi instantanés côté carte : le sketch démarre sans le cycle complet de reflash. En mode Debug, le Zephyr shell répond sur la série et la commande sketch affiche l'état du ELF chargé — l'outil de diagnostic n°1 quand rien ne démarre. Le build amont du loader se fait avec ./extra/build.sh portentah7 (cible arduino_portenta_h7//m7).

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels