Flasher une image vers l'eMMC du module CM4.
Table of Contents
Lorsque le module de calcul dispose d'un dispositif eMMC, ce guide explique comment écrire des données sur le stockage eMMC à l'aide d'une carte E/S de module de calcul.
Il faut que le module de calcul soit correctement installé sur la carte d'E/S. Il doit reposer à plat sur la carte d'E/S.
Il faut que nRPBOOT qui est sur J2 (désactiver le démarrage eMMC) sur le cavalier de la carte IO est installé
Utiliser un câble micro USB pour connecter le port esclave micro USB MCRO_USB sur la carte IO au périphérique hôte.
Ne pas mettre encore sous tension.
Construire rpiboot sur le système hôte
AFin d'utiliser Git pour obtenir le code source de rpiboot, il faut que Git soit installé. Sur un Raspberry Pi ou une autre machine Linux basée sur Debian, utiliser la commande suivante :
sudo apt update sudo apt upgrade -y sudo apt install git
Git peut produire une erreur si la date n'est pas définie correctement. Sur un Raspberry Pi, entrer ce qui suit pour corriger cela :
sudo date MMJJhhmm
où MM est le mois, DD est la jour, et hh et mm sont respectivement les heures et les minutes.
Cloner le dépôt de l'outil usbboot:
git clone --depth=1 https://github.com/raspberrypi/usbboot cd usbboot
libusb doit être installé. Sur Raspberry Pi OS ou autre Linux basé sur Debian, entrer la commande suivante :
sudo apt install libusb-1.0-0-dev
Construire et installer maintenant l'outil usbboot:
make
Exécuter l'outil usbboot et il attendra une connexion :
sudo ./rpiboot
Brancher maintenant la machine hôte dans le port esclave USB de la carte E/S du module de calcul et allumer la carte CMIO. L'outil rpiboot découvrira le module de calcul et enverra le code de démarrage pour permettre l'accès à l'eMMC.
Ecrire sur l'eMMC (Linux)
Une fois rpiboot terminé, on peut voir un nouveau périphérique apparaître ; il s'agit généralement de /dev/sda
sur un Raspberry Pi, mais il peut s'agir d'un autre emplacement tel que /dev/sdb
, alors vérifier /dev/
ou exécutez lsblk avant d'exécuter rpiboot afin d'identifier l'eMMC.
Une fois le périphérique identifié, écrire une image brute du système d'exploitation (telle que Raspberry Pi OS) sur l'appareil. L'exécution de la commande suivante peut prendre un certain temps, selon la taille de l'image : (Remplacer /dev/sdX
par le périphérique approprié.)
sudo dd if=raw_os_image_of_your_choice.img of=/dev/sdX bs=4MiB
Une fois l'image écrite, débrancher et rebrancher la clé USB ; on doit voir apparaître deux partitions (pour Raspberry Pi OS) dans /dev
. Au total, on doit voir quelque chose de similaire à ceci :
/dev/sdX <- Périphérique /dev/sdX1 <- Première partition (FAT) /dev/sdX2 <- Deuxième partition (système de fichiers Linux)
Les partitions /dev/sdX1
et /dev/sdX2
peuvent maintenant être montées normalement.
Il faut s'assurer que J2 (nRPBOOT) est réglé sur la position désactivée et/ou que rien n'est branché sur le port esclave USB. Le redémarrage de la carte d'E/S devrait maintenant entraîner le démarrage du module de calcul à partir d'eMMC.
Configuration du Bootloader
La configuration du chargeur de démarrage par défaut sur CM4 est conçue pour prendre en charge la mise en place et le développement sur une carte d'E/S du module de calcul 4 et la version du logiciel flashé peut être antérieure à la dernière version.
Lors de l'acquisition des produits finaux, il faut considérer :
- Sélection et vérification d'une version spécifique du chargeur de démarrage. La version du référentiel usbboot est toujours une version stable récente.
- Configuration du périphérique de démarrage (par exemple, démarrage réseau).
- Activation de la protection en écriture matérielle sur l'EEPROM du chargeur de démarrage pour garantir que le chargeur de démarrage ne peut pas être modifié sur des produits distants/inaccessibles.
La ROM du module de calcul 4 n'exécute jamais recovery.bin à partir de SD/EMMC et le service rpi-eeprom-update n'est pas activé par défaut. Cela est nécessaire car l'EMMC n'est pas amovible et un fichier recovery.bin non valide empêcherait le démarrage du système. Cela peut être remplacé et utilisé avec le mode d'auto-mise à jour où le chargeur de démarrage peut être mis à jour à partir d'un MSD USB ou d'un démarrage réseau. Cependant, le mode d'auto-mise à jour n'est pas une mise à jour atomique et n'est donc pas sûr en cas de panne de courant pendant la mise à jour de l'EEPROM.
Modification de la configuration du bootloader
Pour modifier la configuration du chargeur de démarrage CM4 :
cd usbboot/recovery
Remplacer pieeprom.original.bin
si une version spécifique du chargeur de démarrage est requise.
Modifier le fichier de configuration du chargeur de démarrage boot.conf
par défaut. Typiquement, au moins le BOOT_ORDER doit être mis à jour :
- Pour le démarrage réseau
BOOT_ORDER=0xf2
- Pour le démarrage SD/EMMC
BOOT_ORDER=0xf1
- Pour le démarrage USB basculant vers EMMC
BOOT_ORDER=0xf15
Exécuter ./update-pieeprom.sh
pour mettre à jour le fichier image de l'image EEPROM pieeprom.bin
.
Si la protection en écriture EEPROM est requise, modifier config.txt et ajouter eeprom_write_protect=1
. La protection en écriture matérielle doit être activée via le logiciel, puis verrouillée en tirant la broche EEPROM_nWP vers le bas.
Exécuter ../rpiboot -d
. pour mettre à jour le chargeur de démarrage à l'aide de l'image EEPROM mise à jour pieeprom.bin
Le fichier pieeprom.bin
est maintenant prêt à être flashé sur le Compute Module 4.
Flasher l'EEPROM du bootloader
Pour flasher l'EEPROM du chargeur de démarrage, suivez la même configuration matérielle que pour flasher l'EMMC, mais il faut également que l'EEPROM_nWP ne soit PAS à l'état bas. Une fois terminé, EEPROM_nWP peut être de nouveau mis à l'état bas.
# Écrit recovery/pieeprom.bin dans l'EEPROM du bootloader. ./rpiboot -d récupération