flasher-core-arduino.sh

Arduino Portenta X8 · Archivo : flasher-core-arduino.sh · Lenguaje : Bash · Uso : Téléverser un croquis Arduino sur le cœur temps réel depuis Linux

El gesto único de la X8: el Linux se auto-graba el firmware Arduino del núcleo de tiempo real con mboot. Backup, flash y run en tres comandos: el despliegue OTA de los dos mundos de la placa se vuelve un simple script.

Hardware

Un Arduino Portenta X8 (módulo ST STM32MP1: quad Cortex-A7 Linux + doble núcleo Cortex-M4 de tiempo real, 8 GB eMMC, 2 GB LPDDR4, Wi-Fi/BT integrados, opción LTE). Ninguno; el sketch compilado (.bin) exportado desde el Arduino IDE.

Cableado

Nada que cablear: el grabado va de la aplicación Linux al núcleo MCU interno.

Funcionamiento

mboot gestiona las particiones firmware del núcleo: --backup archiva la actual, --flash escribe el .bin, --run cambia la ejecución. Fallo de grabado = rollback posible.

Ejecución

Lado Linux: acceso SSH (USB-C routed o red) sobre la imagen Portenta Linux, scripts bash/Python. Lado tiempo real: Arduino IDE con el core « Arduino Mbed OS Portenta X8 Boards », núcleo M7 de aplicación, grabado vía mboot desde Linux.

Variantes

Integrar el grabado en un pipeline CI (GitHub Actions produce el .bin, lo envía por scp y llama a mboot).

flasher-core-arduino.sh

#!/bin/bash
# mboot : le Linux de la X8 flashe les coeurs Arduino (M7/M4).
# Preparer le .bin avec l'Arduino IDE (Portenta X8-M7 core),
# le copier sur la carte (scp), puis :

set -e
BIN="${1:?Usage: $0 firmware.bin [--reset]}"

if [ ! -f "$BIN" ]; then
  echo "fichier introuvable : $BIN"
  echo "Exporter le croquis (Sketch > Export Binary) puis scp :"
  echo "  scp firmware.bin root@<carte>:/tmp/"
  exit 1
fi

# Sauvegarde du firmware courant.
mboot --backup > /tmp/backup-$(date +%F).tar 2>/dev/null || true

# Flash du coeur applicatif temps reel.
mboot --flash "$BIN"

# Redemarrer l'application flashee.
mboot --run

echo "Firmware Arduino applique."
# Pour revenir a l'etat d'usine :
#   mboot --restore /tmp/backup-*.tar
# Logs du deploiement :
#   journalctl -f   (selon l'image)

← Volver a la ficha