🛠 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

Objetivos

Comprender y aprovechar la cadena de arranque del CM1, que carece de una EEPROM de arranque. El BCM2835 intenta leer una tarjeta SD o la eMMC según el estado del pin EMMC_DISABLE_N; en el lado de la eMMC, la búsqueda falla después de aproximadamente 2 segundos si no hay ningún medio válido presente, y luego el módulo cae en modo dispositivo USB (el modo que utiliza rpiboot). Consecuencia práctica: el firmware de arranque (bootcode.bin, seguido de start.elf y config.txt) reside en la primera partición FAT de la eMMC, y un bootcode.bin reciente colocado allí puede reiniciar una actualización completa del firmware. Esta es la palanca de recuperación de un CM1 cuyo firmware está obsoleto o dañado.

Material

Código completo

# 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'

Verificación esperada

Con un bootcode.bin válido en la FAT de la eMMC, el módulo arranca normalmente (LED, consola serie). Con la eMMC vaciada (sudo dd if=/dev/zero of=/dev/sdb bs=1M count=64), la búsqueda expira en ~2 s y el módulo reaparece en el bus USB del PC, lo que demuestra el fallback. El pin EMMC_DISABLE_N en nivel activo enmascara la eMMC y fuerza este mismo camino USB, útil en placas propias para un modo de recuperación por hardware.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales