🛠 Boot sans EEPROM : fallback USB et bootcode.bin sur eMMC

Raspberry Pi Compute Module 1 (CM1) · avance · Schéma : IMG-cm1-avance-1-boot-sans-eeprom-fallback-usb.svg — La séquence de boot du Compute Module 1 sans EEPROM : tentative eMMC avec timeout d'environ 2 secondes, repli sur le mode périphérique USB, et la partition FAT de l'eMMC contenant bootcode.bin et config.txt

Objectifs

Comprendre et exploiter la chaîne de boot du CM1, dépourvue d'EEPROM de boot. Le BCM2835 tente de lire une carte SD ou l'eMMC selon l'état de la broche EMMC_DISABLE_N ; côté eMMC, la sonde échoue au bout d'environ 2 secondes si aucun média valide n'est présent, puis le module retombe en mode périphérique USB (le mode que rpiboot exploite). Conséquence pratique : le firmware de boot (bootcode.bin, puis start.elf et config.txt) vit sur la première partition FAT de l'eMMC, et un bootcode.bin récent placé là peut relancer une mise à jour du firmware complète. C'est le levier de récupération d'un CM1 dont le firmware est obsolète ou corrompu.

Matériel

Code complet

# 1. Passer en mode programmeur (J4 en 1-2) et monter la partition FAT
sudo rpiboot -d /usr/lib/rpiboot/usb &
sleep 5
sudo mount /dev/sdb1 /mnt

# 2. Placer un bootcode.bin récent + config.txt minimal
sudo cp bootcode.bin start.elf fixup.dat config.txt /mnt/
sync && sudo umount /mnt

# 3. J4 en 2-3 : le BCM2835 sonde l'eMMC (~2 s de timeout max),
#    trouve le bootcode.bin, enchaîne sur start.elf puis kernel.img

# 4. Si l'eMMC est vide/illisible : timeout écoulé, le module
#    réapparaît en périphérique USB sur le PC -> rpiboot
lsusb | grep -i '0a5c:2711\|Broadcom'

Vérification attendue

Avec un bootcode.bin valide sur la FAT de l'eMMC, le module boot normalement (LED, console série). Avec l'eMMC vidée (sudo dd if=/dev/zero of=/dev/sdb bs=1M count=64), la sonde expire en ~2 s et le module réapparaît sur le bus USB du PC, prouvant le fallback. La broche EMMC_DISABLE_N au niveau actif masque l'eMMC et force ce même chemin USB — utile sur carte maison pour un mode récupération matériel.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels