🛠 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

Objectifs

Itérer vite sur un noyau maison du BeaglePlay (TI AM625) : la partition de boot est une FAT32 (mmcblk0p1) lue par U-Boot via extlinux, ce qui permet d'échanger un noyau depuis n'importe quel PC sans reflasher. Deux contraintes notables : la chaîne de boot attend un noyau non compressé Image, et l'erratum silicon i2329 de la famille AM62x impose, selon la configuration du port Ethernet, de piloter le MDIO en bit-bang GPIO au lieu du contrôleur MDIO matériel. On intègre le contournement en overlay.

Matériel

Code complet

# 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

Vérification attendue

Au menu extlinux, le label dev démarre le noyau maison : uname -a affiche la version locale, dmesg montre la sonde MDIO en bit-bang GPIO au lieu du contrôleur matériel, et le lien Ethernet monte normalement. Le retour au noyau d'usine se fait en choisissant l'autre label — la FAT étant lisible depuis le PC, aucun reflash n'est nécessaire pour revenir en arrière.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels