I want to start experimenting with alternate boot media options so we attached an eMMC 5.0 chip to the IMX7D sabre development board.
Under u-boot, I can type mmc info and see the chip:
=> mmc dev 1
switch to partitions #0, OK
mmc1(part 0) is current device
=>
=> mmc info
Device: FSL_SDHC
Manufacturer ID: da
OEM: 100
Name: E0002
Bus Speed: 52000000
Mode : MMC High Speed (52MHz)
Rd Block Len: 512
MMC version 5.0
High Capacity: Yes
Capacity: 1.8 GiB
Bus Width: 1-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 1.8 GiB ENH WRREL
User Enhanced Start: 0 Bytes
User Enhanced Size: 1.8 GiB
Boot Capacity: 2 MiB ENH
RPMB Capacity: 512 KiB ENH
After kernel boot, the kernel seems to fail to further communicate with the part and repeats various errors similar to the following as it tries different bus options:
mmc1: Timeout waiting for hardware interrupt.
mmc1: switch to bus width 4 failed
mmc1: mmc_select_hs200 failed, error -110
mmc1: error -110 whilst initialising MMC card
I first was using Linux 4.1.15 and the device appeared as mmc2 (same timeout errors though).
Then tried Linux 4.9.x from the imx branch to see if a newer mmc driver had better luck but it's the same.
There are a lot of posts on the forums with this error but they usually have to do with custom boards and booting. None of them posted a solution that I found. Anyone have a clue where I might look to correctly communicate with the eMMC as an added hard drive?
TIA
Solved! Go to Solution.
Quick update, reflowing our part was able to fix the issue.
In summary, yes, default config out of the box works with the eMMC chip. You don't have to change any kernel drivers or device tree settings, when operating correctly, it shows up as /dev/mmcX***
Hi Dennis
for reliable boot recommended to program emmc with mfg tool found on
also one can try with several emmc as on case
https://community.nxp.com/thread/332110
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Thank you for the response. I think perhaps you misunderstood my original problem. I'm not trying to boot from eMMC right now. I just want to use the eMMC chip for storage option in the mean time. Currently I still boot from the removable SD Card.
Shouldn't I be able to boot from the SD Card and then have linux see eMMC as available block device for storage? u-boot from SD Card can see eMMC chip with > mmc info but in Linux it has timeouts. I don't know if this is a hardware problem or software problem currently.
>Shouldn't I be able to boot from the SD Card and then have linux see eMMC as available block device for storage?
yes. May be useful to check Table 31. Linux uSDHC relationships attached Linux Guide.
Emmc used on sd3 port on i.MX7D Sabre SD schematic
Schematics (2)
Design files for i.MX 7Dual (REV D)
Design files, including hardware schematics, Gerbers, and OrCAD files for i.MX 7Dual (REV D)
http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-process...
and works fine with nxp bsps
linux/arch/arm/boot/dts/imx7d-sdb.dts
imx7d-sdb.dts\dts\boot\arm\arch - linux-imx - i.MX Linux kernel
Linux Documentation
Best regards
igor
hi igor,
did NXP assembly one 153 emmc chip on this board and debug?
if yes, which chips used?
thanks.
The part number on the dev board schematic is: MTFC8GACAEAM-1M WT
It's a Micron part. Unfortunately it's obsoleted so you have to find another eMMC chip that is currently stocked.
thanks, i used Greenliant device.
which part you used?
I'm using this part: SFEM4096B1EA1TO-I-GE-111-E02 From Swissbit. It's been working fine so far.
hi igor,
same issue, when boot from SD card and used u-boot command 'mmc dev 1', the host will failed at high speed mode 8-bit and 4-bit bus width.
did i should set same register of the SD3 port?
Thanks again, the references you pointed to are what I'm using already so it seems like it should work. I'll go back to a lower level and see if we perhaps go the chip attached insufficiently or there is some other hardware problem.
Hi Dennis,
Did you fixed this issue or not?
I find same issue on the i.MX 7Dual SABRE-SD platform.
when at u-boot, i find the mmc dev 1 command will failed to change device to high speed SDR 8 bit and 4 bit mode, after change mode then send_ext_csd_cmd() will failed, the return error is -17.
Quick update, reflowing our part was able to fix the issue.
In summary, yes, default config out of the box works with the eMMC chip. You don't have to change any kernel drivers or device tree settings, when operating correctly, it shows up as /dev/mmcX***
Hi Dennis,
thanks very much, i will reflowing my part too.
We're getting more parts in today to test more. I'll let you know if I find anything.
Our error was -110, a timeout on commands 8 and 55.