🛠 Boot microSD/eMMC et chaîne de démarrage Amlogic

Hardkernel ODROID-C2 (Amlogic S905) · avance · Schéma : IMG-odroid-c2-avance-1-odroidc2-boot-emmc-recouvrement.svg — chaîne de boot BL1 → FIP → U-Boot puis système sur microSD ou module eMMC de l'ODROID-C2

Objectifs

Comprendre et maîtriser la chaîne de démarrage propriétaire Amlogic de l'ODROID-C2 (BL1 signé, FIP, U-Boot), migrer le système d'une microSD vers un module eMMC (beaucoup plus rapide et fiable : bus HS200 contre SDR50/SDR100 limité en mainline), et savoir refuser un média de secours.

Matériel

Code complet

# 1) Copie integrale du système SD -> eMMC (depuis la carte qui boote sur SD)
sudo dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=16M status=progress conv=fsync
# (mmcblk0 = SD, mmcblk1 = eMMC — vérifier avec lsblk avant !)

# 2) Refuser la zone de boot Amlogic sur le nouveau media si besoin :
#    BL1 sur les 442 premiers octets, puis secteur 1, U-Boot signe au secteur 97
DEV=/dev/mmcblk1; BL1=bl1.bin.hardkernel
sudo dd if=$BL1 of=$DEV conv=fsync bs=1 count=442
sudo dd if=$BL1 of=$DEV conv=fsync bs=512 skip=1 seek=1
sudo dd if=u-boot.bin.gxbb of=$DEV conv=fsync bs=512 seek=97
sync

# 3) Tete-être headless : editer boot.ini (images vendor) —
#    setenv nographics "1" libere ~300 Mo de RAM

# 4) Redemarrer sur l'eMMC puis mesurer le gain :
sudo dd if=/dev/zéro of=test.bin bs=1M count=256 oflag=direct conv=fdatasync && rm test.bin

Vérification attendue

En retirant la microSD, la carte démarre seule sur l'eMMC (visible sur la console série : BL1/FIP/U-Boot puis kernel). Le test dd passe de quelques Mo/s sur une microSD bon marché à 100+ Mo/s sur un eMMC HS200. Le boot ROM Amlogic lit toujours BL1 en premier : sans la zone de boot refusée, aucun média n'amorce.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels