ARM64 – Odroid C2 – U-Boot MMC Support..

After the initial patches to provide basic U-Boot support for the C2, as mentioned in a previous article – there is now a further patch, to enable MMC support.    Details at

I have applied this additional patch, and for SDcard-based systems, it works:

U-Boot 2016.05-rc3 (May 14 2016 - 21:06:28 -0700) odroid-c2
aarch64-linux-gnu-gcc (GCC) 5.3.1 20160212 (Red Hat Cross 5.3.1-2)
GNU ld version 2.26.20160125
=> mmc info
Device: <NULL>
Manufacturer ID: 3
OEM: 5054
Name: SL64G
Tran Speed: 25000000
Rd Block Len: 512
SD version 1.0
High Capacity: Yes
Capacity: 58.3 GiB
Bus Width: 1-bit
Erase Group Size: 512 Bytes
=> mmc part
Partition Map for MMC device 0 -- Partition Type: DOS
Part Start Sector Num Sectors UUID        Type
 1   2048         122238976   e5ec0000-01 83

But…  If the system is on an Odroid eMMC module, then it fails:

MMC: <NULL>: 0
Card did not respond to voltage select!
*** Warning - MMC init failed, using default environment
=> mmc list
<NULL>: 0
=> mmc dev 0
Card did not respond to voltage select!

I was able to get a successful SDcard U-boot/Kernel boot, as far as the rootfs load (as the Linux kernel does not yet have C2 mmc support):

=> setenv loadaddr "0x11000000"
=> setenv dtb_loadaddr "0x1000000"
=> setenv bootargs "root=/dev/mmcblk0p1 rootwait rw"
=> setenv bootcmd "ext4load mmc 0:1 ${loadaddr} /boot/uboot/Image; ext4load mmc 0:1 ${dtb_loadaddr} /boot/uboot/meson-gxbb-odroidc2.dtb; booti ${loadaddr} - ${dtb_loadaddr}"
=> boot
9298944 bytes read in 7277 ms (1.2 MiB/s)
2734 bytes read in 37 ms (71.3 KiB/s)
## Flattened Device Tree blob at 01000000
 Booting using the fdt blob at 0x1000000
 Loading Device Tree to 000000007df68000, end 000000007df6baad ... OK
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.6.0-rc7-next-20160510 (rgadsdon@rglinux-i7) (gcc version 5.3.1 20160212 (Red Hat Cross 5.3.1-2) (GCC) ) #1 SMP PREEMPT Sat May 14 21:36:55 PDT 2016
...........  etc..................

So – good progress, but not sure why the eMMC fails…    I’ll probably wait for Linux Kernel MMC support, now..

Robert Gadsdon.   May 15, 2016



ARM64 – Odroid C2 – U-Boot MMC Support.. — 5 Comments

    • No. Only as far as the rootfs load, as the kernel does not yet include C2 mmc support.. Same as for the example using tftp, before..

      Waiting for root device /dev/mmcblk0p1…


  1. Hi Robert,
    how do I get this part of boot process? Do I need a tftp-server? I’ve didn’t find a Fedora aarch64 image to “dd” it to SD-card. Does it work with the 4.7.0 Kernel?

    • Works from SDcard (and eMMC module) now, with all the patches.. U-Boot is OK, but the Linux kernel does not support the Meson MMC yet, so not possible to boot all the way.. You could do this by loading the rootfs by NFS, if you really wanted to.. ‘Full’ mainline kernel support might be later in the 4.7-rc cycle, or maybe not until 4.8..
      Info, and link to repo and images, here:
      The rootfs image (contained inside install.img – squashfs format) is for a ‘server’ version, but the repo includes workstation stuff..
      I use gnome-disk-utility to mount the image file (click on top left button for menu..)..


Leave a Reply

Your email address will not be published. Required fields are marked *