🛠 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

Objectives

Understand and master the proprietary Amlogic boot chain of the ODROID-C2 (signed BL1, FIP, U-Boot), migrate the system from a microSD card to an eMMC module (much faster and more reliable: HS200 bus versus SDR50/SDR100 limited in mainline), and know how to reject a fallback media.

Hardware

Complete code

# 1) Copie integrale du systeme 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 — verifier 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-etre 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/zero of=test.bin bs=1M count=256 oflag=direct conv=fdatasync && rm test.bin

Expected verification

By removing the microSD card, the board boots alone on the eMMC (visible on the serial console: BL1/FIP/U-Boot then kernel). The dd test goes from a few MB/s on a cheap microSD to 100+ MB/s on an HS200 eMMC. The Amlogic boot ROM always reads BL1 first: without the refused boot area, no media boots.

Common errors

Other tutorials for this board

Code examples for this board

← Back to the board 🛠 All tutorials