🛠 Flasher l'eMMC du CM1 avec rpiboot et le jumper J4
Objetivos
Programar el chip eMMC de un Compute Module 1 virgen o a reprogramar. El CM1 no tiene EEPROM de arranque: al colocar el jumper J4 en los pines 1-2, el módulo se presenta al PC como un dispositivo de almacenamiento masivo USB (modo rpiboot/OTP) y dd escribe directamente en la eMMC. Luego se coloca J4 de nuevo en 2-3 para un arranque normal. Trampa conocida: la enumeración USB del modo programador es caprichosa, se requiere una conexión directa, sin hub.
Material
- Un Compute Module 1 con su placa base (preferiblemente la IO Board)
- El jumper J4 (pines 1-2 = modo programador, 2-3 = arranque normal)
- Un cable USB al puerto de dispositivo del conector USB del CM1
rpiboot(utilidad del repositoriolibusb/raspberrypi/usbboot)
Código completo
# 1. J4 sur 1-2, alimenter, brancher l'USB direct (PAS de hub)
sudo rpiboot -d /usr/lib/rpiboot/usb # attend puis énumère l'eMMC
# 2. Le module apparaît comme disque (ex. /dev/sdb) : vérifier !
lsblk
# 3. Écrire l'image (gros blocs = rapide)
sudo dd if=2023-05-03-raspios-bullseye-armhf.img of=/dev/sdb bs=4MiB status=progress oflag=sync
sync
# 4. J4 retour sur 2-3, débrancher, rebrancher : boot normal
Verificación esperada
Después de rpiboot, aparece un nuevo disco del tamaño de la eMMC (típicamente 4 GB) en lsblk. El comando dd finaliza sin errores; al colocar J4 de nuevo en 2-3, el LED verde de la IO Board parpadea y el arranque por serie muestra el kernel. En un CM1 totalmente virgen, este es el único método: no hay ninguna EEPROM que revivir.
Errores frecuentes
- Usar un hub USB o un puerto frontal: la enumeración del modo programador falla silenciosamente,
rpibootespera eternamente. Conectar directamente al controlador host. - Olvidar colocar J4 de nuevo en 2-3: el módulo permanece como disco USB, lo que puede llevar a creer que el arranque está corrupto.
- Equivocarse de disco con
dd: verificar el tamaño enlsblkantes de escribir. - Retirar la alimentación durante el
dd: eMMC escrita parcialmente, hay que empezar de nuevo desde el paso 1. - Buscar una EEPROM con
rpiboot -e: el CM1 no tiene, esta opción no tiene efecto; el fallback se gestiona de otra forma (ver el tutorial de arranque sin EEPROM).
Otros tutoriales para esta placa
- Premier boot : Bullseye legacy, rails 3,3 V et ordre des alimentations
- Première LED sur GPIO17 : banques, courants et broches réservées
- Servo moteur sur PWM0 (GPIO18) : 50 Hz et 2,5 à 12,5 %
- BME280 sur I2C0 (GPIO2/3) : activer i2c_arm et lire l'ID 0x60
- Caméra officielle sur le connecteur FPC CSI du CM1
- Boot sans EEPROM : fallback USB et bootcode.bin sur eMMC
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash