🛠 Construire une image mainline complète avec Buildroot (defconfig officiel du Dock)
Objectifs
Buildroot contient un support OFFICIEL in-tree pour cette carte : la defconfig sipeed_lichee_rv_dock (board/sipeed/lichee_rv_dock) qui assemble une image mainline complète — OpenSBI 1.2 générique, U-Boot lichee_rv_dock (arbre sunxi/d1 de Samuel Holland), noyau avec defconfig nezha et le device tree allwinner/sun20i-d1-lichee-rv-dock.dtb, plus les paquets RTL8723DS Wi-Fi/BT, wpa_supplicant et bluez. Ce tutoriel avancé : build complet depuis un PC x86, écriture du sdcard.img, puis personnalisation (paquets, rootfs en overlay). C'est LA méthode reproductible pour un produit sur D1.
Matériel
- PC Linux de build (8 Go+ RAM, ~15 Go disque ; gcc ≥ 10 ; la croisée riscv64 est construite par Buildroot lui-même)
- Lichee RV Dock + microSD de qualité ; console série 115200 (UART0 PB8/PB9)
- Réseau sur le PC (téléchargement des sources)
Code complet
# 1) Sources Buildroot (master ou branche stable)
git clone https://gitlab.com/buildroot.org/buildroot.git
cd buildroot
# 2) Defconfig officielle de la carte
make sipeed_lichee_rv_dock_defconfig
make menuconfig # optionnel : paquetals (dropbear, nginx, python...), kernel local
# 3) Build complet (long à la première exécution)
make -j"$(nproc)"
# 4) Image SD bootable (layout genimage : vfat /boot + ext4 racine)
ls -lh output/images/ # sdcard.img, fw_jump.bin/fw_dynamic.bin (OpenSBI),
# u-boot.bin, Image, sun20i-d1-lichee-rv-dock.dtb
lsblk # puis écrire sur la BONNE carte :
sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync
# 5) Boot : microSD sous le module, câble A-vers-C, série 115200 -> invite root.
# Vérifier la chaîne :
dmesg | grep -iE 'machine|opensbi'
ls /proc/device-tree/ | head
cat /proc/config.gz > /dev/null 2>&1 || zcat /proc/config.gz | grep THEAD
Vérification attendue
output/images/sdcard.img est produit sans erreur ; au boot série, OpenSBI annonce RISC-V SBI, U-Boot démarre, le noyau charge et monte la racine ext4 ; l'invite # Buildroot apparaît. uname -m renvoie riscv64, ls /sys/class/leds montre les LED du device tree amont, et ip link révèle wlan0 (paquet RTL8723DS inclus). Le dtb utilisé est bien sun20i-d1-lichee-rv-dock (visible dans la log U-Boot « Flattened Device Tree »).
Erreurs fréquentes
- Builder sous WSL1 ou avec un vieux gcc : Buildroot exige un environnement propre ; préférer une VM/container Debian récent, sinon des paquets hôtes cassent le build.
- Lancer
makesans defconfig : la config vide x86 par défaut produit une image inutilisable ; toujours partir desipeed_lichee_rv_dock_defconfig. make cleanpour tout : un changement de paquet ne demande quemake <paquet>-rebuild+make target-package; tout nettoyer fait perdre des heures.- Écrire sdcard.img sur la partition d'une clé au lieu du disque entier : la table de partitions est dans l'image, écrire sur une partition donne un boot muet.
- Modifier le kernel sans dire à Buildroot de le rebuilder (
make linux-rebuild) : l'Image dans output/images reste l'ancien. - Oublier que le rootfs est en squashfs/ext4 en lecture seule selon la config : pour persister, activer le rootfs ext4 avec extension ou un overlay.
Autres tutoriels pour cette carte
- Premier boot du Lichee RV Dock avec Ubuntu 24.04 RISC-V
- LEDs du Lichee RV Dock : LED verte et RGB WS2812 pilotée par le LEDC du D1
- Audio sur le Dock : enregistrer au micro numérique et jouer sur le haut-parleur 3 W
- Wi-Fi et Bluetooth du module RTL8723DS sur le Lichee RV Dock
- GPIO, touche utilisateur ADC et PWM sur le connecteur 2×20 du Lichee RV
- Tina Linux : l'OpenWrt vendor d'Allwinner pour le Lichee RV, installation et sysconfig
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash