🛠 Écrire un overlay device tree pour les nappes cape sous K3
Objetivos
Desbloquear las funciones multiplexadas de los pines P8/P9 (UART, I2C, SPI, CAN...) escribiendo un overlay de device tree, utilizando el método moderno configfs. Atención: el AI-64 es un SoC K3 (J721E) — el antiguo capemanager /sys/devices/platform/bone_capemanager de las BeagleBone Black NO existe aquí, y la tabla de muxmodes por pin (por ejemplo, P8_03 en GPIO0_20 en el muxmode 7) se encuentra en el capítulo 7 del System Reference Manual.
Material
- 1 BeagleBone AI-64, imagen Debian actualizada
- Paquetes device-tree-compiler; acceso a la tabla de multiplexado del SRM (docs.beagleboard.org)
Código completo
/* cape-uart.dtso — squelette : activer un périphérique muxé sur P8/P9.
Les offsets et macros EXACTS se lisent dans la table SRM ch.7 et dans
dt-bindings/pinctrl/k3.h du noyau — ne pas deviner, vérifier. */
/dts-v1/;
/plugin/;
#include <dt-bindings/pinctrl/k3.h>
&main_pmx0 {
pinctrl_cape_uart: cape-uart-default {
pinctrl-single,pins = <
/* offset broche (offset mux) choisis dans la table SRM */
0x0a0 (PIN_INPUT | MUX_MODE0) /* exemple RX */
0x0a4 (PIN_OUTPUT | MUX_MODE0) /* exemple TX */
>;
};
};
&main_uart1 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_cape_uart>;
};
dtc -@ -I dts -O dtb -o cape-uart.dtbo cape-uart.dtso
sudo mkdir -p /sys/kernel/config/device-tree/overlays/cape_uart
cat cape-uart.dtbo | sudo tee /sys/kernel/config/device-tree/overlays/cape_uart/dtbo
ls /dev/ttyS* ; sudo dmesg | tail # le port doit apparaître
Verificación esperada
El dispositivo activado aparece (nuevo /dev/ttySx, /dev/i2c-N...) y dmesg no muestra conflictos de pinmux. Realice un bucle de prueba (loopback) cableando RX y TX del conector: echo test > /dev/ttySx junto con cat en paralelo devuelve test.
Errores frecuentes
- Buscar bone_capemanager: es propio de la arquitectura AM335x legacy; en K3 se utiliza configfs (o /lib/firmware + cargador para la persistencia en el arranque).
- Equivocarse de muxmode: la función multiplexada incorrecta en un pin produce un dispositivo fantasma o un conflicto — siempre recopile la tabla SRM pin por pin.
- Sobrescribir un pin ya utilizado por la imagen (LED, eMMC, CSI): verifique gpioinfo/pinmux-status (cat /sys/kernel/debug/pinctrl/*/pinmux-pins) antes de proceder.
- Olvidar la persistencia: un overlay configfs desaparece al reiniciar; para el arranque, cárguelo mediante el gestor de arranque de la imagen.
- 5 V en un pin: todos los conectores operan a 3,3 V, bajo pena de daños irreversibles.
Otros tutoriales para esta placa
- Flasher l'image officielle et démarrer la BeagleBone AI-64
- Faire clignoter une LED sur la broche P8_03 avec libgpiod
- Surveiller la température et l'alimentation du TDA4VM
- Réseau : Ethernet Gigabit unique et module Wi-Fi en M.2 E-key
- Caméra MIPI CSI et encodage H.264 matériel via GStreamer
- Remoteproc : inventorier et démarrer les co-processeurs R5F et C66x
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash