🛠 Noyau mainline avec Armbian : vérifier le device tree, ajouter un overlay, lire le SARADC
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 Radxa ZERO 3W + microSD
- Imagen de Armbian para radxa-zero3 (armbian.com/boards/radxa-zero3 — credenciales por defecto root/1234 según la página de Radxa)
- Para el SARADC: una tensión variable de 0–3,3 V (p. ej., potenciómetro de 10 kΩ montado entre 3V3 y GND, cursor hacia el pin SARADC_IN5) — nunca más de 3,3 V
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
- Confundir BSP (6.1/5.10 de Radxa) y mainline (Armbian): los overlays se gestionan mediante rsetup en Radxa OS, y mediante armbianEnv.txt en Armbian — no mezcle los mecanismos.
- Modificar armbianEnv.txt sin guardar el original: una línea
overlays=malformada puede privar de dispositivos durante el arranque. - Enviar > 3,3 V a SARADC_IN5: máximo absoluto 3,3 V, la entrada no es tolerante a 5 V.
- Leer el canal incorrecto: el canal IIO no es necesariamente el número de pin — identifique
rockchip-saradcy pruebe canal por canal. - Esperar un DAC: no se documenta ningún convertidor digital-analógico en el conector — solo lectura analógica.
- Olvidar el commit de corrección del alias MMC en un kernel mainline antiguo (6.10 puro): SD/eMMC pueden estar intercambiados; utilice una versión ≥ 6.11 o Armbian actualizado. > NO VERIFICADO: la primera versión estable que contiene la corrección (junio de 2024, probablemente 6.11) no se ha vuelto a verificar contra las etiquetas.
Otros tutoriales para esta placa
- Premiers pas avec la Radxa ZERO 3W : flasher Radxa OS et démarrer
- Wi-Fi 6 et Bluetooth 5.4 : se connecter, choisir l'antenne, connaître sa révision
- GPIO avec libgpiod : faire clignoter une LED et lire un bouton
- Installer le système sur l'eMMC : rkdeveloptool, MaskROM et gain de fiabilité
- Caméra MIPI CSI : brancher une Raspberry Pi Camera (OV5647/IMX219) sur la ZERO 3W
- NPU 0,8 TOPS : inférence RKNN (YOLO, Whisper) sur la ZERO 3W
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash