AnsweredAssumed Answered

eMMC hangs in u-boot after eMMC boot

Question asked by Matt Campbell on Dec 17, 2015
Latest reply on Apr 29, 2016 by Karsten Schauties

Hi All,


I'm working on a custom i.MX6 solo lite board based of the EVK design. I'm able to load u-boot from either the sdcard (on uSDHC1) or a 4gb eMMC (on uSDHC2, eMMC 4.5 set in compatibility mode). When I boot from the SD card all it well and I can load Linux. When I boot from the eMMC u-boot begins to load, but hangs when trying to initialize the eMMC. It seems to hang when it issues the first idle cmd, waiting forever for a response. My best guess is that the eMMC is getting put in a bad state from the boot ROM as the same u-boot works fine from and SD card. Any thoughts on what might be going on here?


Update: if I remove any eMMC work from u-boot, then do a network boot of Linux, Linux is also unable to access the eMMC. I'm not sure where to look, but I'm thinking it's either settings in the eMMC or the boot configuration settings of the iMX.


Update 2: Here is a call stack for where it is freezing in u-boot

Line 365 of "drivers/mmc/fsl_esdhc.c" starts at address 0x8ff8f86c <esdhc_send_cmd+500> and ends at 0x8ff8f880 <esdhc_send_cmd+520>.

(gdb) si

0x8ff8f878 365 while (!(esdhc_read32(&regs->irqstat) & (IRQSTAT_CC | IRQSTAT_CTOE)))

(gdb) bt

#0  0x8ff8f878 in esdhc_send_cmd (mmc=0x8fc75290, cmd=0x8fc74cd4, data=0x0) at drivers/mmc/fsl_esdhc.c:365

#1  0x8ff8fd80 in mmc_go_idle (mmc=mmc@entry=0x8fc75290) at drivers/mmc/mmc.c:287

#2  0x8ff914a8 in mmc_start_init (mmc=0x8fc75290) at drivers/mmc/mmc.c:1619

#3  0x8ff916ac in mmc_init (mmc=mmc@entry=0x8fc75290) at drivers/mmc/mmc.c:1679

#4  0x8ff843c4 in init_mmc_device (dev=dev@entry=1, force_init=force_init@entry=true) at common/cmd_mmc.c:154