AnsweredAssumed Answered

How to get eMMC 8-bit HS DDR fast boot mode working on iMX8MM

Question asked by Kurt Kiefer on Jan 14, 2020
Latest reply on Jan 17, 2020 by Aldo Gutierrez

We are unable to get fast boot mode with ack working on eMMC when configured for 8-bit hs DDR mode on our custom board. The eMMC hardware works correctly both after loading u-boot through sdp and when booting into Linux from there, but the boot ROM will not load u-boot from the eMMC, it will always fall back to serial download. It doesn't appear to fall back to normal boot mode either.

 

Our eMMC does support HS ddr @ 52MHz 1.8V. It is a v5.1 card, and should support everything needed for boot:

Boot Information [BOOT_INFO: 0x07]
Device supports alternative boot method
Device supports dual data rate during boot
Device supports high speed timing during boot

 

mmc extcsd has been set up, trying both through u-boot and through linux.

 

u-boot=> mmc partconf 0 1 1 0

u-boot=> mmc partconf 0
EXT_CSD[179], PARTITION_CONFIG:
BOOT_ACK: 0x1
BOOT_PARTITION_ENABLE: 0x1
PARTITION_ACCESS: 0x0

u-boot=> mmc bootbus 0 2 0 2

 

The ITB u-boot image has been created just like the flash_evk_emmc_fastboot, and it works for sdp mode (has the correct header, etc). It is written into mmcblk0boot0 at offset 0x400 bytes.

 

I can also disable ack, clear ITB from 0x400, and program the u-boot image to 0x8400 either to boot0 or boot1, but the boot ROM won't load u-boot in that case either. I think this should be the fall-back to normal mode?

 

Here is the fusing we have set up:

 

u-boot=> fuse read 1 3
Reading bank 1:

Word 0x00000003: 180020e6

 bt_fuse_sel [28] = 1
            1 - boot from fuses
 boot device [14:12] = 010
            010 - MMC/eMMC
 port select (sd1) [11:10] = 0
            00 - uSDHC1
 power cycle enable [9] = 0
            0 - no power cycle
 SD Loopback Clock Source SEL sdr50/sdr104 [8] = 0
            0 - through SD pad
 Fast Boot [7] = 1
            1 - Fast boot
 Bus Width [6:4] = 110
            110 - 8-bit DDR (MMC 4.4)
 Speed [3:2]: = 01
            01 - High
 Voltage for normal boot [1]: = 1
            1 - 1.8 V
 Voltage for mfr mode [0]: = 0
            0 - 3.3 V

 

u-boot=> fuse read 2 1
Reading bank 2:

Word 0x00000001: 00010700

 

DLL enable [16] = 1

         1 - Enable DLL for SD/eMMC

MMC_DLL_DLY [14:8] = 7

         7 - slave delay target 7 (as used and confirmed in u-boot)


u-boot=> fuse read 2 2
Reading bank 2:

Word 0x00000002: 00000001

 

Fast boot acknowlege disable [0] = 1

         1 - Boot ack enabled

 

Here is how we have the eMMC wired:

 

 

I'm not sure what else to try or check! By all accounts, it seems like boot from eMMC should work. Please help.

 

Thanks!

 

Kurt

Outcomes