🛠 Flasher l'eMMC d'un CM3 par USB avec rpiboot
Objectifs
Écrire une image système directement dans les 4 Go d'eMMC soudés d'un CM3, sans carte SD. Le BCM2837 n'a pas d'EEPROM de bootloader : à la mise sous tension il cherche bootcode.bin sur l'eMMC, puis en cas d'échec attend le code de démarrage sur USB. En reliant EMMC_DISABLE_N à la masse, on déconnecte physiquement l'eMMC (broche SDCMD) et on force ce mode USB device, où le module s'énumère comme disque de masse USB piloté par rpiboot (dépôt officiel raspberrypi/usbboot).
Matériel
- CM3 (avec eMMC ; le CM3 Lite n'en a pas et se programme par SD) sur CMIO3
- Câble micro-USB entre le port USB slave de la CMIO3 et un PC Linux (ou un autre Pi)
- Cavalier EMMC_DISABLE_N mis sur la CMIO3 (jumper eMMC-disable)
- Image Raspberry Pi OS 32 bits (armhf, branche Pi 3)
Code complet
# Sur le PC hôte (Linux) :
git clone https://github.com/raspberrypi/usbboot
cd usbboot && make && sudo ./rpiboot # le CM3 apparaît comme disque USB
lsblk # repérer le périphérique, p. ex. /dev/sdb
lsblk /dev/sdb # vérifier la taille (~4 Go pour un CM3)
sudo dd bs=4M conv=fsync status=progress \
if=2024-xx-xx-raspios-bookworm-armhf.img of=/dev/sdb
sync
Retirer le cavalier EMMC_DISABLE_N, re-alimenter : le module démarre sur son eMMC. Le firmware réactive l'eMMC via EMMC_EN_N_1V8 pendant la programmation USB (datasheet §8).
Vérification attendue
Après sudo ./rpiboot, lsblk montre un nouveau disque d'environ 4 Go ; après dd et redémarrage sans le cavalier, le bureau Raspberry Pi OS s'affiche en HDMI et lsblk sur le CM3 montre la racine root sur /dev/mmcblk0.
Erreurs fréquentes
- Écrire sur le mauvais disque (
/dev/sda= disque du PC !) : toujours vérifier la taille aveclsblkavant dd. - Oublier de retirer le cavalier EMMC_DISABLE_N après flash : le module redemande le boot USB au lieu de l'eMMC.
- Attendre un BOOT_ORDER comme sur CM4/Pi 4 : le CM3 n'a pas d'EEPROM, l'ordre de boot est figé dans le silicium — le forçage USB est purement matériel.
- Le passage en boot USB coûte ~2 s de timeout eMMC après la mise sous tension : c'est normal, laisser quelques secondes avant de brancher le câble.
- Tenter de flasher un CM3 Lite de cette façon : sans eMMC, il n'a rien à flasher — écrire une SD à la place.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash