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

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

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

2,828 Views
kurt1
Contributor I

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:

pastedImage_1.png

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

Labels (1)
0 Kudos
4 Replies

2,480 Views
AldoG
NXP TechSupport
NXP TechSupport

Hello,

 

Please check your spl.c under the board directory.  It must setup usdhc1 in board_mmc_init, since our imx8mm_evk does not use usdhc1, it only setups usdhc2 and usdhc3, you may refer to the imx8mq_evk, in this board it uses usdhc1 for emmc as in your design.

 

Also, you'll need to change board_mmc_get_env_dev" API according to board specific, like the following 

int board_mmc_get_env_dev(int devno)

{

return devno;// - 1; 

}

 

Hope this helps,

Regards,

Aldo.

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos

2,480 Views
kurt1
Contributor I

Thanks for the reply, Aldo. Yes, I am already doing this. Also, I've fixed up spl_boot_device() to return BOOT_DEVICE_MMC1 for SD1_BOOT. The SPL works properly when I load it from the serial downloader, and eMMC works from u-boot as expected.

Note that it's not getting this far -- I don't get any output from my SPL at all so it seems that it's never running. After about 15 seconds from POR, the usb device from the ROM serial downloader shows up instead.

Kurt

0 Kudos

2,480 Views
kurt1
Contributor I

I'm still trying to figure this out, but at the end of what I can determine on my own. I really need some help from NXP or someone else who's managed to get this to work.

0 Kudos

2,480 Views
tom_perman
Contributor III

Did you manage to resolve your above difficulties? 
I am working on a design which uses imx8mm with fast boot emmc boot, and so would appreciate any insight. 

0 Kudos