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
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
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.
-------------------------------------------------------------------------------
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
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.
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.