Hello. I've connected eMMC memory to pins USDHC4 (4-bit data) of i.mx6 solo.
I can read information about device, but I/O operations has been excepted.
U-Boot > mmc dev 2
MMC: mmc_getcd(mmc) = 1
MMC: mmc_send_cmd
                CMD_SEND:0
                ARG                      0x00000000
                MMC_RSP_NONE
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:8
                ARG                      0x000001AA
                MMC_RSP_R1,5,6,7         0x2FF67610
                MMC: mmc_send_cmd result=-19
MMC: mmc_send_cmd
                CMD_SEND:55
                ARG                      0x00000000
                MMC_RSP_R1,5,6,7         0x2FF67610
                MMC: mmc_send_cmd result=-19
MMC: mmc_send_cmd
                CMD_SEND:0
                ARG                      0x00000000
                MMC_RSP_NONE
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:1
                ARG                      0x00000000
                MMC_RSP_R3,4             0x00FF8080
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:1
                ARG                      0x40300000
                MMC_RSP_R3,4             0x00FF8080
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:1
                ARG                      0x40300000
                MMC_RSP_R3,4             0x00FF8080
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:1
                ARG                      0x40300000
                MMC_RSP_R3,4             0xC0FF8080
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:2
                ARG                      0x00000000
                MMC_RSP_R2               0x9D010149
                                         0x53303332
                                         0x475011C3
                                         0xA0D31500
                                        DUMPING DATA
                                        000 - 9D 01 01 49
                                        004 - 53 30 33 32
                                        008 - 47 50 11 C3
                                        012 - A0 D3 15 00
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:3
                ARG                      0x00010000
                MMC_RSP_R1,5,6,7         0x00000500
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:9
                ARG                      0x00010000
                MMC_RSP_R2               0xD04F0132
                                         0x0F5903FF
                                         0xFFFFFFEF
                                         0x8A400000
                                        DUMPING DATA
                                        000 - D0 4F 01 32
                                        004 - 0F 59 03 FF
                                        008 - FF FF
U-Boot > mmc part
## Unknown partition table
U-Boot > mmc write 1000 0 1
MMC write: dev # 2, block # 0, count 1 ... MMC: mmc_set_blocklen = 512
MMC: mmc_send_cmd
                CMD_SEND:16
                ARG                      0x00000200
                MMC_RSP_R1,5,6,7         0x00000001
                MMC: mmc_send_cmd result=-19
0 blocks written: ERROR
FF EF
                                        012 - 8A 40 00 00
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:13
                ARG                      0x00010000
                MMC_RSP_R1,5,6,7         0x00000700
                MMC: mmc_send_cmd result=0
CURR STATE:3
MMC: mmc_send_cmd
                CMD_SEND:7
                ARG                      0x00010000
                MMC_RSP_R1,5,6,7         0x00000700
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:8
                ARG                      0x00000000
                MMC_RSP_R1,5,6,7         0x00000900
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:8
                ARG                      0x00000000
                MMC_RSP_R1,5,6,7         0x00000900
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:6
                ARG                      0x03B90100
                MMC_RSP_R1b              0x00000800
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:13
                ARG                      0x00010000
                MMC_RSP_R1,5,6,7         0x00000900
                MMC: mmc_send_cmd result=0
CURR STATE:4
MMC: mmc_send_cmd
                CMD_SEND:8
                ARG                      0x00000000
                MMC_RSP_R1,5,6,7         0x00000900
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:6
                ARG                      0x03B70200
                MMC_RSP_R1b              0x00000800
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:13
                ARG                      0x00010000
                MMC_RSP_R1,5,6,7         0x00000900
                MMC: mmc_send_cmd result=0
CURR STATE:4
MMC: mmc_send_cmd
                CMD_SEND:8
                ARG                      0x00000000
                MMC_RSP_R1,5,6,7         0x00000900
                MMC: mmc_send_cmd result=-19
MMC: mmc_send_cmd
                CMD_SEND:6
                ARG                      0x03B70100
                MMC_RSP_R1b              0x00000800
                MMC: mmc_send_cmd result=0
MMC: mmc_send_cmd
                CMD_SEND:13
                ARG                      0x00010000
                MMC_RSP_R1,5,6,7         0x00000900
                MMC: mmc_send_cmd result=0
CURR STATE:4
MMC: mmc_send_cmd
                CMD_SEND:8
                ARG                      0x00000000
                MMC_RSP_R1,5,6,7         0x00000900
                MMC: mmc_send_cmd result=0
MMC: mmc_bread
MMC: mmc_set_blocklen = 512
MMC: mmc_send_cmd
                CMD_SEND:16
                ARG                      0x00000200
                MMC_RSP_R1,5,6,7         0xBEFB25EF
                MMC: mmc_send_cmd result=-19
MMC: mmc_set_blocklen = -19
 U-Boot > mmcinfo
Device: FSL_SDHC
Manufacturer ID: 9d
OEM: 101
Name: IS032
Tran Speed: 52000000
Rd Block Len: 512
MMC version 5.0
High Capacity: Yes
Capacity: 29.1 GiB
Bus Width: 4-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 29.1 GiB WRREL
Boot Capacity: 4 MiB ENH
RPMB Capacity: 4 MiB ENH
U-Boot > mmc part
## Unknown partition table
U-Boot > mmc write 1000 0 1
MMC write: dev # 2, block # 0, count 1 ... MMC: mmc_set_blocklen = 512
MMC: mmc_send_cmd
                CMD_SEND:16
                ARG                      0x00000200
                MMC_RSP_R1,5,6,7         0x00000001
                MMC: mmc_send_cmd result=-19
0 blocks written: ERROR
What I'm doing wrong?
Thanks!
If it is customized board, have you changed the index according to the customized hardware design.
how is mmc list output?
U-Boot > mmc write 1000 0 1
MMC write: dev # 2, block # 0, count 1 ... MMC: mmc_set_blocklen = 512
MMC: mmc_send_cmd
                CMD_SEND:16
                ARG                      0x00000200
                MMC_RSP_R1,5,6,7         0x00000001
                MMC: mmc_send_cmd result=-19
0 blocks written: ERROR
The following index is for i.MX6 reference board hardware design and port mapping.
int board_mmc_init(bd_t *bis) { #ifndef CONFIG_SPL_BUILD int ret; int i; /* * According to the board_mmc_init() the following map is done: * (U-Boot device node) (Physical Port) * mmc0 SD2 * mmc1 SD3 * mmc2 eMMC */ for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) { switch (i) { case 0: imx_iomux_v3_setup_multiple_pads( usdhc2_pads, ARRAY_SIZE(usdhc2_pads)); gpio_direction_input(USDHC2_CD_GPIO); usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK); break; case 1: imx_iomux_v3_setup_multiple_pads( usdhc3_pads, ARRAY_SIZE(usdhc3_pads)); gpio_direction_input(USDHC3_CD_GPIO); usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK); break; case 2: imx_iomux_v3_setup_multiple_pads( usdhc4_pads, ARRAY_SIZE(usdhc4_pads)); usdhc_cfg[2].sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK); break; default: printf("Warning: you configured more USDHC controllers" "(%d) then supported by the board (%d)\n", i + 1, CONFIG_SYS_FSL_USDHC_NUM); return -EINVAL;
I have above question, because the log shows the interface connect to sdcard, has cd.
but the mmcinfo shows connect to emmc.
BTW, emmc has no wp, no cd.
U-Boot > mmc dev 2
MMC: mmc_getcd(mmc) = 1
MMC: mmc_send_cmd
Harris Teeter has made a specialist login entrance where dynamic accomplices can get to their business related records. The entry means to decrease the administrative obligation and beat any issues among laborers and HR. Also, a lot of online organizations are available for the delegates to get to and make due.
The Harris Teeter specialist login entrance was once known as the MyhtSpace login doorway. After a few changes, the passage is by and by directed by Benefit Solver. So the door will be known as the Harris Teeter Benefit Solver login passage. This article will give your information about delegate selection and login processes.
There have been many different papers and presentations on auditing hardware in the past, and several of them went into the topic of acquiring the code from the target. One such example comes from Micah Elizabeth Scott. On her blog, Micah discussed how she went about reverse engineering an eMMC flash pinout upsers
Hello.
This eMMC has a public datasheet and pinout.
So, there is no need on reverse engineering.
It's shorted to GND.
However, WP just forbids data write, but reading should work.
error -19 is command timeout.
I've checked CMD and DATA channels by osciloscope, I'm seeing normal voltage levels (1V8), host and eMMC have transferred some requests and responces to each other.
CLK has signal 386.7kHz
Sure,
I'm trying to determine eMMC in uBoot on TinyRex SoM with imx6 solo:
* uBoot: GitHub - voipac/uboot-imx at uboot-imx-v2015.04
* uBoot config: uboot-imx/mx6tinyrexbasic_defconfig at uboot-imx-v2015.04 · voipac/uboot-imx · GitHub
* uBoot board: uboot-imx/board/fedevel/mx6tinyrex at uboot-imx-v2015.04 · voipac/uboot-imx · GitHub
* emmc PINs: uboot-imx/mx6tinyrex.c at uboot-imx-v2015.04 · voipac/uboot-imx · GitHub
* Kernel .dts: linux-fslc/imx6-tinyrexbasic.dts at 4.1-2.0.x-imx-rex · voipac/linux-fslc · GitHub
linux-fslc/imx6qdl-tinyrex.dtsi at 4.1-2.0.x-imx-rex · voipac/linux-fslc · GitHub
eMMC memory is ISSI IS21ES32G
The u-boot version seem quite old.
You may try to use the BSP from NXP.
i.MX Software and Development Tools | NXP
for example : Linux L4.14.98_2.0.0 Documentation