🛠 Noyau mainline avec Armbian : vérifier le device tree, ajouter un overlay, lire le SARADC
Objectifs
Le device tree rk3566-radxa-zero-3w.dts est entré dans le noyau mainline par le commit 1a5c8d307c83 (Jonas Karlman, fusionné le 27 mai 2024, première release : Linux 6.10), avec eMMC/SD/HDMI/USB ; une correction d'alias MMC (060c1950) a suivi en juin 2024. Armbian embarque ce noyau mainline pour la board. Ce tuto : basculer sur Armbian, vérifier qu'on parle bien du descripteur mainline, maîtriser le mécanisme d'overlays Armbian, et lire l'entrée analogique SARADC_IN5 (3,3 V max) exposée par le driver IIO rockchip-saradc.
Matériel
- 1 Radxa ZERO 3W + microSD
- Image Armbian pour radxa-zero3 (armbian.com/boards/radxa-zero3 — identifiants par défaut root/1234 selon la page Radxa)
- Pour le SARADC : une tension variable 0–3,3 V (ex. potentiomètre 10 kΩ monté entre 3V3 et GND, curseur vers la broche SARADC_IN5) — jamais plus de 3,3 V
1) Vérifier le board description mainline
cat /proc/device-tree/compatible # -> radxa,zéro-3w rockchip,rk3566
uname -a # noyau mainline Armbian (>= 6.10)
ls /boot/dtb/rockchip/ | grep zero3 # le DTB embarqué
2) Overlays 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
3) SARADC via 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
Vérification attendue
compatible renvoie bien radxa,zero-3w rockchip,rk3566 ; après ajout d'un overlay, ls /proc/device-tree/ ou ls /sys/firmware/devicetree/base/ montre le nœud ajouté ; en tournant le potentiomètre, in_voltage5_raw suit et le calcul awk affiche 0,000 à 3,300 V.
Erreurs fréquentes
- Confondre BSP (6.1/5.10 Radxa) et mainline (Armbian) : les overlays se gèrent via rsetup sur Radxa OS, via armbianEnv.txt sur Armbian — ne pas mélanger les mécanismes.
- Modifier armbianEnv.txt sans sauvegarder l'original : une ligne
overlays=malformée peut priver de périphériques au boot. - Envoyer > 3,3 V sur SARADC_IN5 : max absolu 3,3 V, l'entrée n'est pas tolérante 5 V.
- Lire le mauvais canal : le canal IIO n'est pas forcément le numéro de broche — identifiez
rockchip-saradcet testez canal par canal. - Attendre un DAC : aucun convertisseur numérique-analogique n'est documenté sur le connecteur — lecture analogique seulement.
- Oublier le commit de fix alias MMC sur un vieux noyau mainline (6.10 pur) : SD/eMMC peuvent être intervertis ; prenez une release ≥ 6.11 ou Armbian à jour. >
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash