🛠 Écrire un overlay device tree pour les nappes cape sous K3

BeagleBone AI-64 (TI TDA4VM / J721E) · avance · Schéma : IMG-beaglebone-ai64-avance-2-overlay-device-tree-k3-cape.svg — nappes P8/P9 de l'AI-64 avec tableau de muxmodes du SRM en médaillon, flux .dtso → dtc → /sys/kernel/config/device-tree/overlays.

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

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

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales