🛠 Noyau mainline avec Armbian : vérifier le device tree, ajouter un overlay, lire le SARADC

Radxa ZERO 3W · intermediaire · IMG-rz3w-intermediaire-6-rz3w-armbian-mainline-overlay-saradc.svg — Radxa ZERO 3W sous Armbian : terminal cat /proc/device-tree/compatible (radxa,zero-3w rockchip,rk3566), fichier /boot/armbianEnv.txt avec la ligne overlays=, dossier /boot/dtb/rockchip/overlay/ ; à droite, une tension analogique appliquée sur SARADC_IN5 via un pont diviseur et la lecture in_voltage5_raw.

Objetivos

El device tree rk3566-radxa-zero-3w.dts entró en el kernel mainline mediante el commit 1a5c8d307c83 (Jonas Karlman, fusionado el 27 de mayo de 2024, primera versión: Linux 6.10), con soporte para eMMC/SD/HDMI/USB; una corrección de alias MMC (060c1950) siguió en junio de 2024. Armbian incluye este kernel mainline para la placa. Este tutorial: cambiar a Armbian, verificar que se está utilizando el descriptor mainline, dominar el mecanismo de overlays de Armbian y leer la entrada analógica SARADC_IN5 (máx. 3,3 V) expuesta por el driver IIO rockchip-saradc.

Hardware

1) Verificar la descripción de la placa mainline

cat /proc/device-tree/compatible   # -> radxa,zero-3w rockchip,rk3566
uname -a                           # noyau mainline Armbian (>= 6.10)
ls /boot/dtb/rockchip/ | grep zero3 # le DTB embarqué

2) Overlays de Armbian

ls /boot/dtb/rockchip/overlay/     # liste les overlays livrés avec VOTRE release
sudo nano /boot/armbianEnv.txt      # ajoutez : overlays=pwm1i2pwm (exemple)
sudo reboot
# Overlay maison :\ncat > my.dts << 'EOF'
/dts-v1/; /plugin/;
/ {
    fragment@0 {
        target-path = "/";
        __overlay__ {
            vcc_cam: vcc-cam {
                compatible = "regulator-fixed";
                regulator-name = "vcc-cam";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
            };
        };
    };
};
EOF
dtc -@ -I dts -O dtb -o my.dtbo my.dts   # puis déclarez-le dans armbianEnv.txt

> NO VERIFICADO: el nombre exacto del overlay (pwm1i2pwm citado como ejemplo) disponible para radxa-zero3 según la versión de Armbian — liste /boot/dtb/rockchip/overlay/ en el dispositivo objetivo.

3) SARADC mediante IIO

ls /sys/bus/iio/devices/iio:device*/          # l'un a name = rockchip-saradc
cat /sys/bus/iio/devices/iio:device0/in_voltage5_raw    # code brut du canal 5
cat /sys/bus/iio/devices/iio:device0/in_voltage_scale   # LSB -> mV
awk 'NR==FNR{r=$1;next}{printf "%.3f V\n", r*$1/1e9}' \
    /sys/bus/iio/devices/iio:device0/in_voltage5_raw \
    /sys/bus/iio/devices/iio:device0/in_voltage_scale

> NO VERIFICADO: el índice IIO exacto y el hecho de que SARADC_IN5 esté enrutado a un pin específico del conector de 40 pines según las revisiones de hardware — la documentación confirma la especificación eléctrica (máx. 3,3 V) pero no el enrutamiento; verifique el esquema en la página de descargas.

Verificación esperada

compatible devuelve correctamente radxa,zero-3w rockchip,rk3566; tras añadir un overlay, ls /proc/device-tree/ o ls /sys/firmware/devicetree/base/ muestra el nodo añadido; al girar el potenciómetro, in_voltage5_raw sigue la variación y el cálculo awk muestra de 0,000 a 3,300 V.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales