We are using a System-On Module(SOM) with iMX6(Solo) processor and Micron eMMC(Part No:MTFC4GMDEA-4M IT). As a design requirement, we have to read the FAT32 partition in eMMC first, before reading the kernel image(from boot partition).
Sometimes, on trying to read the FAT32 partition in u-boot,the partition is reported missing and is not able to detect any of the eMMC partitions and the device stops at u-boot.We skipped reading the FAT partition and it got stuck while reading the kernel from boot partition.This issue can be easily reproduced when the device(to which SOM is connected),is powered OFF and turned ON quickly (within a difference of about 2 seconds).
We probed the Core and IO power domains (VCC and VCCQ) and reset of the eMMC, but both the power rails were stable and the device was out of reset,when the corruption occurs.
On checking the eMMC read code, to identify the failure, we could see a timeout error.
Below is the time-out error log for reference.
esdhc_send_cmd() 279: err -19
esdhc_send_cmd() 280: xfertyp 0x113a0018
Return ret -19
mmc_read_blocks() 384: ERROR
** Can't read from device 0 **
** Unable to use mmc 0:9 for fatload **
As it was a time-out error, we tried reducing the SD clock from 52 MHz to 26MHz in u-boot and in kernel,we are again configuring the SD clock to 52MHz. We are not able to reproduce the eMMC corruption issue with SD clock at 26MHz (so far) in u-boot.
Can you please let us know why the time-out error occurs when the device is turned OFF and ON quickly.Is reducing the SD_Clock is actually a solution.Also if SD_Clock needs to be reduced at u-boot, do we need to lower the clock in kernel too.
Please let us know the cause for the eMMC corruption issue.Your hekp is highly appreciated.