AnsweredAssumed Answered

iMX6SL Unable Boot from eMMC

Question asked by Yakov Shaulov on Feb 11, 2017
Latest reply on Aug 16, 2018 by Ali Ismail

Hello everyone, 

We finally succeeded to load the Kernel. We’re also able to turn our device to Mass Storage mode and flash the U-Boot, Kernel and System Files to eMMC (we made Porting BSP from IMX6SL-EVK to our custom board).

 

Our custom board had PF3000 PMIC (instead of PF0100 as on IMX6SL-EVK board), LPDDR2 8Gb and eMMC v5.0 4GB (Micron MTFC4GACAJCN-1M WT) as boot memory device on USDHC2 port (instead of SD-card slot, that doesn’t exist on our board). On our board we don’t have access to BOOT_CFG GPIOs.

 

Our next stage was to programming the eFUSEs to boot from the eMMC. We use MFGTool to load and write the U-Boot, Kernel and File System to the eMMC but we unable to boot from the eMMC. We tried to set the eFuse (CFG1 & CFG2) as following:
Once with the value 0xC870 (Board 1) –
            BOOT_CFG1[4]=1 Fast Boot Support: Fast Boot
            BOOT_CFG1[3:2]=00 MMC Speed Mode: High Speed Mode
                                                                                 eMMC Fast Boot Acknowledge enable
            BOOT_CFG2[7:5]=110 Bus Width: 8-bit DDR (MMC 4.4)
            BOOT_CFG2[4:3]=01 Port Select: USDHC2
            BOOT_CFG2[2]=0 Boot Frequencies: 792/400 MHz
            BOOT_CFG2[1]=0 SD2 Voltage Selection 3.3V

 

And once (on another identical board) with the value 0x4860 (Board 2) –
            BOOT_CFG1[4]=0 Fast Boot Support: Normal Boot
            BOOT_CFG1[3:2]=00 MMC Speed Mode: High Speed Mode
                                                                                 eMMC Fast Boot Acknowledge enable
            BOOT_CFG2[7:5]=010 Bus Width: 8-bit
            BOOT_CFG2[4:3]=01 Port Select: USDHC2
            BOOT_CFG2[2]=0 Boot Frequencies: 792/400 MHz
            BOOT_CFG2[1]=0 SD2 Voltage Selection 3.3V

In both cases we unable to boot at power up! We don’t see any response on terminal screen (UART1 Port). In first case, the device turns to HID-Compliant Device after about 20sec. It seems like a CPU and eMMC tried to communicate on a power-up stage. We also see the CMD line (between MCU and eMMC) going from high to low after 83 usec and activity on CLK line in about 3 sec (at 50MHz frequency).
In second case, our board jumps immediately to HID-Compliant Device and there is no activity on CLK line and the CMD line never goes high.
Q(1): May it occurred as result of incorrect eFUSE programming?

We also tried to configure the PARTITION_CONFIG Register (EXT_CSD [179]) from MFGTool U-Boot command line as following:
            => mmc partconf 0 1 1 1
                        ‘0’ – mmc0 device
                        First ‘1’ (from left) - BOOT_ACK: Boot acknowledge sent during boot operation
                        Second ‘1’ - BOOT_PARTITION_ENABLE: Boot from boot partition 1
                        Third ‘1’ - PARTITION_ACCESS: R/W boot partition 1
  We noticed that this register is configured from emmc.c file with same configuration (after some debugging). But we still can’t boot from eMMC on power up.

 

However, on both boards we managed to boot the kernel from the eMMC after booting from MFGTool and using “boot” command from the MFGTool’s U-Boot command line. It seems like we have only issue with U-Boot booting from eMMC.
Q(2): Is this claim is true?

 

So the facts that we able to boot Kernel from eMMC (through MFGTool’s U-Boot) and have the ability to write and read from the eMMC eliminating the possibility of lack/fault of communication between iMX6 and eMMC.
Q(3): Is this claim is true?

 

Q(4): Does it mean that it impossible to boot with eMMC v5.0? Or it’s something else that we’re missing?

 

Q(5): What can be reason for the disability of booting from eMMC in our case?

 

As I mentioned, we stacked at boot from eMMC stage and we don't have any idea what can be reason for this issue. It seems like that we performed all steps correctly.

 

Regards

Outcomes