gpio-libgpiod.sh
libgpiod es la interfaz GPIO seria bajo Linux: gpiodetect, gpioinfo, gpioset. El script hace parpadear un LED del conector carrier documentando a la vez la trampa de liberación de línea al salir gpioset.
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). 1 LED + resistencia de 330 Ω (pines de 1,8 V/3,3 V según el conector: mira el esquema).
Cableado
LED en el pin GPIO elegido del conector high-density (vía carrier board), GND al lado. Algunas patas van por debajo de 3,3 V.
Funcionamiento
gpioset pide al kernel que controle la línea; --mode=exit aplica el valor y termina. Según el kernel, añade --mode=wait para mantenerla.
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
Pasar al demonio Python (ejemplo python-gpio) para control fino, o controlar PWM vía /sys/class/pwm.
gpio-libgpiod.sh
#!/bin/bash
# Clignotement LED via libgpiod (outils noyau standard).
# Installation : opkg/apt install gpiod (present sur l'image X8).
# Lister : gpiodetect ; broches du connecteur : gpioinfo.
CHIP="${1:-gpiochip0}" # verifier avec gpiodetect
LIGNE="${2:-27}" # GPIO du schema carrier (exemple)
echo "Puces GPIO :"
gpiodetect
echo "Clignotement $CHIP ligne $LIGNE (Ctrl-C pour arreter)"
while true; do
# --mode=exit applique puis rend la ligne ; selon le noyau,
# ajouter --mode=wait pour garder la ligne captive.
gpioset --mode=exit "$CHIP" "$LIGNE=1"
sleep 1
gpioset --mode=exit "$CHIP" "$LIGNE=0"
sleep 1
done