🛠 Provisionnement en masse de l'eMMC et migration CM1 vers CM4
Objetivos
Industrializar la programación de la eMMC de los CM1: escritura masiva de la misma imagen mediante el modo rpiboot, verificación por huella digital, y preparación de la migración mecánica/eléctrica CM1 -> CM4 cuando el BCM2835 desaparezca de los suministros. El punto de referencia oficial es el documento técnico Raspberry Pi RP-003469-WP sobre los Compute Modules: documenta las diferencias de interfaz (USB, PCIe, doble fila de GPIO, alimentación) y la envolvente mecánica — la altura de ocupación pasa de aproximadamente 30 mm a 31 mm, lo que afecta a las cubiertas y disipadores. En cuanto al aprovisionamiento, dado que el CM4 dispone de una EEPROM, el flujo cambia: rpiboot despierta la EEPROM y luego la eMMC se convierte en un disco USB.
Material
- Un lote de CM1 (y CM4 para el estudio de migración)
- Un hub USB industrial o una estación multipuerto (en el aprovisionamiento, el hub alimentado está validado mediante prueba: el modo programador del CM1 no tolera los hubs encadenados)
- La imagen maestra + sha256sum, el documento técnico RP-003469-WP
Código completo
#!/bin/bash
# provisioning.sh - à lancer un module à la fois par port contrôlé
IMG=master-bullseye-armhf.img
for dev in /dev/sdb /dev/sdc /dev/sdd; do
sudo dd if=$IMG of=$dev bs=4MiB status=none oflag=sync &
done
wait; sync
# Vérification : comparer les premiers 512 Mo + empreinte fichier maître
sha256sum $IMG
sudo dd if=/dev/sdb bs=1M count=512 status=none | sha256sum
# Migration CM1 -> CM4 (synthèse du RP-003469-WP)
- EEPROM de boot présente sur CM4 -> flux rpiboot différent
- USB : device OTG côté CM4, hôte possible via PCIe
- GPIO : connecteurs différents, revoir la carte porteuse
- Hauteur : ~30 mm -> ~31 mm, vérifier capot/ventirad
- Alimentation : exigences VDD_IO et VBAT redéfinies
Verificación esperada
El script escribe N módulos en paralelo y cada huella de control coincide con la maestra (salvo la zona variable si la partición raíz se redimensiona en el primer arranque). El paso a producción se valida mediante un arranque completo aleatorio en una muestra. Para la migración, se recorre punto por punto la lista de verificación RP-003469-WP y la plantilla de altura de 31 mm se valida en CAD antes de cualquier rediseño de la placa.
Errores frecuentes
- Encadenar hubs no alimentados para multiplicar los puertos: el modo programador del CM1 es caprichoso con USB, valide cada topología en una prueba real o programe un puerto a la vez.
- Validar el aprovisionamiento sin reconectar: un módulo correctamente escrito pero con J4 olvidado en 1-2 falla en la prueba final; automatice el control de J4 o elimínelo mecánicamente.
- Creer que la imagen del CM1 (ARMv6/Bullseye) es reutilizable tal cual en el CM4: el CM4 es ARMv8/aarch64, la imagen maestra debe reconstruirse.
- Ignorar el cambio de 30 -> 31 mm: la cubierta de la carcasa del producto ya no cierra en serie.
- Descuidar el desgaste de la eMMC en escrituras maestras repetidas: mantenga una imagen comprimida y escriba en bloques grandes (bs=4MiB), nunca byte a byte.
Otros tutoriales para esta placa
- Flasher l'eMMC du CM1 avec rpiboot et le jumper J4
- 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
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash