🛠 Override du device tree : OTG en gadget, UART2, et l'Euler bus oublié

Pine64 PINE A64 / PINE A64+ (Allwinner A64) · avance · Schéma : IMG-pine64-avance-3-device-tree-otg-euler.svg — PINE A64 avec son connecteur micro-USB OTG relie a un PC en mode peripherique, overlay device tree dr_mode peripheral affiche dans un terminal, connecteur Euler 2x17 annote (UART, SPI, SPDIF, CAN) a cote du connecteur Pi-2, module RTL8723BS enfiche sur son port SDIO

Objetivos

El device tree mainline de la PINE A64 (sun50i-a64-pine64.dts, compatible pine64,pine64) realiza elecciones pragmáticas que pueden cuestionarse: el puerto OTG está fijado como host (usb_otg dr_mode = "host"), el UART2 del conector Pi-2 está desactivado, y el bus Euler 2×17 —la verdadera originalidad de la placa, con UARTs adicionales, SPI, SPDIF y CAN— no es explotado por ninguna imagen por defecto. Este tutorial avanzado: comprender la estructura del DTS, escribir un overlay y reclamar por cuenta propia los periféricos silenciosos de la placa.

Material

Código completo

/* pine64-otg-peripheral.dts — overlay : rendre l'OTG périphérique */
/dts-v1/;
/plugin/;
&usb_otg {
    dr_mode = "peripheral";   /* le mainline impose "host" */
    status  = "okay";
};
&uart2 {
    status = "okay";          /* PB0/PB1 = broches UART2 du connecteur Pi-2 */
};
# Compiler l'overlay :
dtc -@ -I dts -O dtb -o pine64-otg-peripheral.dtbo pine64-otg-peripheral.dts
sudo cp pine64-otg-peripheral.dtbo /boot/dtb/allwinner/overlay/
# Déclarer l'overlay (Armbian : /boot/armbianEnv.txt, ligne : overlays=...)
# reboot, puis vérifier côté PC hôte : lsusb voit apparaître la carte (gadget).

# Inventaire des contrôleurs présents mais désactivés :
ls /sys/firmware/devicetree/base/soc/ | head -40
grep -rl '"disabled"' /sys/firmware/devicetree/base/ 2>/dev/null | head

# Les banques GPIO exposées (PB..PH) et leur numérotation bank*32+pin :
#   PD16 -> 112   PH2 -> 226   (pinctrl-sun50i-a64.c)
gpioinfo gpiochip0 | grep -E 'PD|PH'

Verificación esperada

Tras reiniciar con el overlay, el puerto micro-USB OTG es visto como dispositivo desde el PC host (lsusb en el PC, dmesg | grep -i gadget en la placa) — prueba de que el dr_mode del DTS mainline era efectivamente el bloqueo. El UART2 activado aparece (ls /dev/ttyS* o ttySN según el orden de numeración) en los pines PB0/PB1 del conector Pi-2. Para el bus Euler (2×17 pines: UARTs adicionales, SPI, SPDIF, CAN), el camino es el mismo: activar los controladores correspondientes en un overlay y cablear según el PDF oficial de pinout — la placa ofrece más conectores de los que su imagen por defecto activa.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales