🛠 Construire une image mainline complète avec Buildroot (defconfig officiel du Dock)
Objetivos
Buildroot contiene un soporte OFICIAL in-tree para esta placa: la defconfig sipeed_lichee_rv_dock (board/sipeed/lichee_rv_dock) que ensambla una imagen mainline completa — OpenSBI 1.2 genérico, U-Boot lichee_rv_dock (árbol sunxi/d1 de Samuel Holland), kernel con defconfig nezha y el device tree allwinner/sun20i-d1-lichee-rv-dock.dtb, además de los paquetes RTL8723DS Wi-Fi/BT, wpa_supplicant y bluez. Este tutorial avanzado cubre: compilación completa desde un PC x86, escritura de sdcard.img, y personalización (paquetes, rootfs en overlay). Es EL método reproducible para un producto basado en D1.
Hardware
- PC Linux de compilación (8 GB+ de RAM, ~15 GB de disco; gcc ≥ 10; la cadena cruzada riscv64 es construida por Buildroot mismo)
- Lichee RV Dock + microSD de calidad; consola serie 115200 (UART0 PB8/PB9)
- Red en el PC (descarga de fuentes)
Código completo
# 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
Verificación esperada
output/images/sdcard.img se produce sin errores; al arrancar por serie, OpenSBI anuncia RISC-V SBI, U-Boot inicia, el kernel carga y monta la raíz ext4; aparece el prompt # de Buildroot. uname -m devuelve riscv64, ls /sys/class/leds muestra los LED del device tree upstream, y ip link revela wlan0 (paquete RTL8723DS incluido). El dtb utilizado es efectivamente sun20i-d1-lichee-rv-dock (visible en el log de U-Boot « Flattened Device Tree »).
Errores frecuentes
- Compilar bajo WSL1 o con un gcc antiguo: Buildroot exige un entorno limpio; prefiera una VM/contenedor Debian reciente, de lo contrario los paquetes host romperán la compilación.
- Ejecutar
makesin defconfig: la configuración vacía por defecto para x86 produce una imagen inservible; siempre parta desipeed_lichee_rv_dock_defconfig. - Usar
make cleanpara todo: un cambio en un paquete solo requieremake <paquete>-rebuild+make target-package; limpiar todo hace perder horas. - Escribir sdcard.img en la partición de una llave USB en lugar del disco completo: la tabla de particiones está dentro de la imagen, escribir en una partición resulta en un arranque silencioso.
- Modificar el kernel sin indicar a Buildroot que lo reconstruya (
make linux-rebuild): la Image en output/images permanece siendo la antigua. - Olvidar que el rootfs es squashfs/ext4 en solo lectura según la configuración: para persistir, active el rootfs ext4 con extensión o un overlay.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash