🛠 Flasher l'eMMC d'un CM3 par USB avec rpiboot

Raspberry Pi Compute Module 3 (CM3 / CM3L) · intermediaire · Schéma : un PC hôte relié en micro-USB au port device de la carte CMIO3, un module CM3 inséré, le cavalier EMMC_DISABLE_N posé ; le module apparaît comme disque USB.

Objetivos

Escribir una imagen de sistema directamente en los 4 GB de eMMC soldados de un CM3, sin tarjeta SD. El BCM2837 no tiene EEPROM de bootloader: al encenderse busca bootcode.bin en la eMMC y, en caso de fallo, espera el código de arranque por USB. Al conectar EMMC_DISABLE_N a masa, se desconecta físicamente la eMMC (pin SDCMD) y se fuerza este modo de dispositivo USB, donde el módulo se enumera como un disco de almacenamiento masivo USB controlado por rpiboot (repositorio oficial raspberrypi/usbboot).

Material

Código completo

# 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

Retirar el puente EMMC_DISABLE_N, volver a alimentar el módulo: este arranca desde su eMMC. El firmware reactiva la eMMC mediante EMMC_EN_N_1V8 durante la programación USB (datasheet §8).

Verificación esperada

Tras ejecutar sudo ./rpiboot, lsblk muestra un nuevo disco de aproximadamente 4 GB; después de dd y de reiniciar sin el puente, el escritorio de Raspberry Pi OS se muestra por HDMI y lsblk en el CM3 muestra la raíz root en /dev/mmcblk0.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales