🛠 Développement noyau : extlinux sur FAT32 et contournement de l'erratum i2329
Objetivos
Iterar rápidamente sobre un núcleo propio del BeaglePlay (TI AM625): la partición de arranque es una FAT32 (mmcblk0p1) leída por U-Boot mediante extlinux, lo que permite intercambiar un núcleo desde cualquier PC sin volver a flashear. Hay dos restricciones notables: la cadena de arranque espera un núcleo no comprimido Image, y la errata de silicio i2329 de la familia AM62x impone, según la configuración del puerto Ethernet, controlar el MDIO mediante bit-bang GPIO en lugar del controlador MDIO de hardware. La solución alternativa se integra mediante un overlay.
Hardware
- Una tarjeta BeaglePlay que arranque desde SD o eMMC
- Un PC de compilación cruzada aarch64 con los paquetes de compilación del núcleo
- Un acceso fiable por serie o SSH (riesgo de kernel panic)
Código completo
# 1. Monter la partition de boot FAT32
sudo mkdir -p /mnt/boot && sudo mount /dev/mmcblk0p1 /mnt/boot
cat /mnt/boot/extlinux/extlinux.conf
# 2. Config et build (noyau non compressé)
make ARCH=arm64 defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) Image dtbs
# 3. Déployer sur la FAT
sudo cp arch/arm64/boot/Image /mnt/boot/Image-dev
sudo cp arch/arm64/boot/dts/ti/k3-am625-beagleplay.dtb /mnt/boot/dtbs/
# 4. Nouveau label dans extlinux.conf
# label dev
# linux /Image-dev
# fdtdir /dtbs/
# fdtoverlays /overlays/k3-am625-beagleplay-mdio-bitbang.dtbo # erratum i2329
# append root=PARTUUID=... rootwait console=ttyS2,115200n8
sudo umount /mnt/boot && sudo reboot
Verificación esperada
En el menú extlinux, la etiqueta dev inicia el núcleo propio: uname -a muestra la versión local, dmesg muestra la sonda MDIO en bit-bang GPIO en lugar del controlador de hardware, y el enlace Ethernet se establece normalmente. El retorno al núcleo de fábrica se realiza eligiendo la otra etiqueta — como la FAT es legible desde el PC, no es necesario volver a flashear para retroceder.
Errores frecuentes
- Desplegar un
Image.gzsin procesar: la cadena de arranque no lo descomprime, nada inicia después de elegir la etiqueta. - Editar el extlinux de la SD mientras se ha reiniciado en la eMMC (o viceversa): el núcleo no cambia, lo que lleva a creer que la compilación está fallida.
- Ignorar la errata i2329 en una configuración que la activa: el PHY deja de responder en el MDIO de hardware, no hay enlace Ethernet y se pierden horas revisando el cable.
- Eliminar
rootwaitde la línea append: la raíz no tiene tiempo de aparecer, panicUnable to mount root. - Trabajar sin consola serie: al primer oops, no queda ningún medio para entender la causa.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash