Trying out eMMC boot from our custom board (partly based on the Sabrelite desgin) and find that the board will not boot from the eMMC device (on USDHC2 port) with what I think is the correct settings with boot mode "10" for using external boot config settings. With the BT_CFG1_5 bit '1' which should be correct for eMMC boot, it will not boot, however if I set this bit to '0' for SD boot, it will boot. The boards also boots from a uSD card on USDHC4 port with this bit set to '0' as it should. Interface is 4 bit.
The eMMC device I use is a rev 4.41 device N2M400FDB311A3CE - Micron Technology, Inc.
Something obvious(?) I must have overlooked... u-boot is currently written to offset 0x400 of the eMMC
I've was just fighting with this today.
You need to fiddle some obscure settings in the eMMC before the boot ROM will deign to load U-Boot from it. See this post for the tantalizing details, but basically you need to change the eMMC's low-level boot config. This can be done through sysfs:
$ cd /sys/devices/platform/sdhci-esdhc-imx.2/mmc_host/mmc0/mmc0:0001
$ cat boot_info
boot_info:0x07;
ALT_BOOT_MODE:1 - Supports alternate boot method
DDR_BOOT_MODE:1 - Supports alternate dual data rate during boot
HS_BOOTMODE:1 - Supports high speed timing during boot
boot_size:536870912KB
boot_partition:0x01;
BOOT_ACK:0 - No boot acknowledge sent
BOOT_PARTITION-ENABLE: 0 - Device not boot enabled
PARTITION_ACCESS:1 - R/W boot partition 1
boot_bus:0x00
BOOT_MODE:0 - Use single data rate + backward compatible timings in boot operation
$ echo 8 > boot_config
$ cat boot_info
boot_info:0x07;
ALT_BOOT_MODE:1 - Supports alternate boot method
DDR_BOOT_MODE:1 - Supports alternate dual data rate during boot
HS_BOOTMODE:1 - Supports high speed timing during boot
boot_size:536870912KB
boot_partition:0x48;
BOOT_ACK:1 - Boot acknowledge sent during boot operation
BOOT_PARTITION-ENABLE: 1 - Boot partition 1 enabled
PARTITION_ACCESS:0 - No access to boot partition
boot_bus:0x00
BOOT_MODE:0 - Use single data rate + backward compatible timings in boot operation
This should enable booting from the first boot partition on the eMMC (/dev/mmcblk0boot0). You could also echo a '9' into boot_config instead, which would preserve read/write access to the partition.
EDIT: Fixed sysfs path above, since you're using USDHC2 rather than USDHC3.