🛠 Développement noyau : extlinux sur FAT32 et contournement de l'erratum i2329

BeaglePlay (TI Sitara AM6254 / AM625) · avance · Schéma : IMG-beagleplay-avance-3-dev-noyau-extlinux-i2329.svg — La partition boot FAT32 mmcblk0p1 contenant extlinux.conf et un noyau Image non compressé, avec à côté le contrôleur MDIO remplacé par un bit-bang GPIO à cause 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

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

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales