gpio-libgpiod.sh

Arduino Portenta X8 · Archivo : gpio-libgpiod.sh · Lenguaje : Bash · Uso : Piloter un GPIO du connecteur avec les outils libgpiod

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

← Volver a la ficha