Our board adopts the hardware design of emmc+DDR4, emmc is connected to the SDHC1 interface, I refer to SDHC3 to open the relevant pin definition, and check the function of turning off other multiplexed pins, but if you don’t modify emmc_dev to 0, uuu burns When the firmware cannot be burned to emmc0 (emmc1 prompts not found), even so, when switching to the normal startup mode after the burn is successful, there will be a problem that the emmc device cannot be found, mmc info can find the information of emmc0, printenv can Check the env information, but cannot save the modified settings. We have tried various reforms, but still cannot solve this problem. What could be the cause of this problem? Is it because i.mx8M mini does not support booting from SDHC1? #define CONFIG_MFG_ENV_SETTINGS \ CONFIG_MFG_ENV_SETTINGS_DEFAULT \ "initrd_addr=0x43800000\0" \ "initrd_high=0xffffffffffffffff\0" \ "emmc_dev=1\0"\ ====》"emmc_dev=0\0" //Here must be modified to 0, otherwise uuu cannot burn the firmware to emmc0 "sd_dev=0\0" \
See below, please!
1. BOOT configuration from SD1 port.
BOOT_CFG[11:10]=00 (Selcet uSDHC1 port)
BOOT_CFG[6:4]=001 (4bit bus)
BOOT_CFG[3:1]=000 (Using normal mode)
2. About VDDIO of microSD
For current microSD card, most of them supports 1.8V VDDIO.
So NVCC_SD1 should be supplied 1.8V,
If you use 3.3V microSD card, MVCC_SD should be 3.3V
if you hope 3.3V/1.8V IO are both supported, you will have to use samilar power solution of NVCC_SD2(can be switched between 1.8V and 3.3V)
3. About initialization of uSDHC1 clock
see imx8mm_evk/spl.c in u-boot, in function "int board_mmc_init(bd_t *bis)",
you can find only SD2 is initialized for i.MX8MM DDR4 EVK, because only SD2 is connected to SD card, SD3 port is connected to NAND FALSH.
So for your appliation, you should add usdhc1 code here.
You can refer to code of uSDHC2/uSDHC3 to add code for uSDHC1!
4. device tree in u-boot
There is no usdhc1 pins iomux, you can refer to that of usdhc2 to add it.
Hope above information is helpful to you.
Have a nice day!