i.mx6 with eMMC 5.0 SDR or DDR interface?

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

i.mx6 with eMMC 5.0 SDR or DDR interface?

Jump to solution
14,880 Views
wallyyeh
Contributor V

Hi, Recently our custom i.mx6Q board wanna using eMMC 5.0 instead eMMC 4.4

and I already know that i.mx6 can't support eMMC 5.0 with HS400 mode, from this post:

eMMC 4.5 support with i.MX6

but I wonder can i.mx6 operate eMMC 5.0 under SDR or DDR mode?

eMMC 4.4 and eMMC 5.0 pins are almost the same, except for one pin for *Write Protection* , so I left the pin NC.

and after using MFGtools passing kernel and initrd to i.mx6, the linux kernel can't recognize the entire eMMC 5.0 chip, no /dev/mmcblk0 exist.

could some one give me some hint? thanks.

Tags (1)
1 Solution
5,731 Views
wallyyeh
Contributor V

After contact FAE support.

He suggest me change check value of card->ext_csd.rev, change 6 to 7.

now eMMC 5.0 can work as an eMMC 4.4.

attached file is the patch of what I done.

View solution in original post

16 Replies
5,731 Views
umasundaram
Contributor II

Hi Warren Jan

  We are facing a similar issue in our custom board with iMX6 and eMMC(Part No:MTFC4GMDEA-4M IT).When we try to read the boot partition table (through CMD17),we receive the same partition table missing error.

   Is your issue resolved now. Can you please let us know which version of u-boot are you using.

Thanks,

Uma.

0 Kudos
Reply
5,731 Views
andyknowles
Contributor I

Hi Uma and Warren Jan,

We have also starting having intermittent issues with an iMX28 and a Micron v5 eMMC (MTFC4GACAJCN-4M IT). The version of u-boot we are using (2009) seems to not have any issues, but Linux then fails to read the partition table from flash.

After debugging the mxs-mmc driver, we have found out that the Data CRC error status bit is being set, and that by checking that bit (in mxs_mmc_cmd_error()) we can signal an error to the block device driver, which will then retry using single block reads. But the next attempt to set up a DMA read hangs the kernel.

Have either of you found any work around for this issue? We are looking at switching to an alternative flash manufacturer and, if debugging the drivers doesn't go anywhere soon, maybe trying to soft reset the entire CPU.

Thanks,

Andy

0 Kudos
Reply
5,731 Views
warrenjan
Contributor II

Hi everyone

i used Micron emmc V5 ( MTFC8GAKAJCN-4M IT). i meet some issue.

I changed the mmc.c "if (card->ext_csd.rev > 7)". and i can found the emmc devices . 

when i write uboot/kernel/rootfs image into  emmc ,and start boot from emmc , Sometime work fine.

But Sometime fails ,  The log show " can't read emmc partition " .

my kernel based on Android 5.0.2 (uboot 2014.04, kernel 3.10.53)

the log  like this.

U-Boot 2014.04-08648-g9d7bf9b-dirty (Dec 29 2016 - 15:13:19)

CPU: Freescale i.MX6Q rev1.5 at 792 MHz
CPU: Temperature 25 C, calibration data: 0x59550269
Reset cause: POR
Board: MX6-SabreSD
I2C: ready
DRAM: 2 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
*** Warning - bad CRC, using default environment

No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
In: serial
Out: serial
Err: serial
Setup 610A
WFound PFUZE100 deviceid=10,revid=21
check_and_clean: reg 0, flag_set 0
Fastboot: Normal
flash target is MMC:2
** Can't read partition table on 2:0 **
Bad partition index:1 for partition:boot
** Can't read partition table on 2:0 **
Bad partition index:2 for partition:recovery
** Can't read partition table on 2:0 **
Bad partition index:5 for partition:system

Anyone could give me the Suggestion . Tks.

0 Kudos
Reply
5,731 Views
wallyyeh
Contributor V

Hi, Warren:

    Your log show you are not stuck in the Linux kernel, you have this issue while still in U-Boot stage.

    But I won't suggest you check your U-Boot code, because you said sometimes it will success enter your system. that means your U-Boot is OK; I guess.

    Since both your Linux kernel and U-Boot are OK; I'll suggest you check your physical connection between i.mx SOC and eMMC, maybe eMMC power-up sequence need check, too.

    If my boss ask me for workaround like this case, I might adding if statement to reboot for such a eMMC failure and hope next boot it will get recovered.

Wally

0 Kudos
Reply
5,731 Views
willychen
Contributor II

Hi everyone, I have the same problem too. I can fix the "card->ext_csd.rev, change 6 to 7" and compile to a working normal uImage to run from SD card boot, but I need my target board to be booted from eMMC, the problem is I can not compile to a new MFGTools uImage to program my uboot/uImage to eMMC. When I use ltib to compile for the MFGTools, (./ltib --profile config/platform/imx/updater.profile --preconfig config/platform/imx/imx6q_updater.cf --continue --batch), it will fail and stop at u-boot (common/lcd.c  => undefined reference to `panel_info'); but I indeed can use ltib to generate my normal uImage and uBoot.bin, only fail for MFGTool. So I do not know what's the problem.

0 Kudos
Reply
5,731 Views
wallyyeh
Contributor V

I would suggest you open a new post, your problem is not getting linux kernel support eMMC 5.0

so you should open a post for ltib build uboot failed - "common/lcd.c  => undefined reference to `panel_info'"

by the way, it seems you may turn on some CONFIG and it require a undefined variable which name is "panel_info", you should check

your uboot/common/lcd.c

5,731 Views
wallyyeh
Contributor V

Sorry, the Additional pin for eMMC 5.0 is not for write protect. it is for Data Strobe signal, which make eMMC from HS200 to HS400.

0 Kudos
Reply
5,731 Views
kokhuateng
Contributor I

Hi Wally Yeh,

Do you connect the Data Strobe signal to your host ?

Thanks in advance.

0 Kudos
Reply
5,730 Views
wallyyeh
Contributor V

Hi, KokHua:

   Nope, we just leave this pin unconnected.

Wally

0 Kudos
Reply
5,730 Views
johnfang
Contributor I

May I ask which eMMC 5.0 brand that you are using for this test?

Thanks in advance.

0 Kudos
Reply
5,730 Views
wallyyeh
Contributor V

we using both samsung & sandisk.

the correct model I need to ask our HW coworker.

0 Kudos
Reply
5,732 Views
wallyyeh
Contributor V

After contact FAE support.

He suggest me change check value of card->ext_csd.rev, change 6 to 7.

now eMMC 5.0 can work as an eMMC 4.4.

attached file is the patch of what I done.

5,730 Views
letan
Contributor III

Hi Wally,

Do we need to modify the u-boot-imx any more? The u-boot-imx version I am using is 2015.04

And do we need to add the MMC VERSION 5 to the code below?

u-boot-imx-2015.04/drivers/mmc/mmc.c - mmc_startup()

if (mmc->version == MMC_VERSION_UNKNOWN) {
int version = (cmd.response[0] >> 26) & 0xf;

switch (version) {
case 0:
mmc->version = MMC_VERSION_1_2;
break;
case 1:
mmc->version = MMC_VERSION_1_4;
break;
case 2:
mmc->version = MMC_VERSION_2_2;
break;
case 3:
mmc->version = MMC_VERSION_3;
break;
case 4:
mmc->version = MMC_VERSION_4;
break;
default:
mmc->version = MMC_VERSION_1_2;
break;
}
}

0 Kudos
Reply
5,730 Views
wallyyeh
Contributor V

Hi, Le Tan:

    No, you don't need modify the U-Boot code; As far as I can remember, U-Boot can recognize eMMC 5.0 as eMMC 4.4 out of box since version "2009.07".

Wally

5,730 Views
gusarambula
NXP TechSupport
NXP TechSupport

Unfortunately the i.MX6 Q processor supports only eMMC4.4 and lower so there is no much information on how feasible it would be to have an eMMC 5.0 working and functionality cannot be guaranteed.

That being said, the i.MX6Q does support eMMC4.4 Double Data Rate (DDR) as its part of that standard. More information on this mode can be found on section 67.5.3.2.2 of the i.MX6Q Reference Manual (link below)

http://cache.freescale.com/files/32bit/doc/ref_manual/IMX6DQRM.pdf

0 Kudos
Reply
5,730 Views
jamesbone
NXP TechSupport
NXP TechSupport

gusarambula, can you please check this topic?

0 Kudos
Reply