cancel
Showing results for 
Search instead for 
Did you mean: 

eMMC boot failure / boot rom

desteibe
Associate

Dear community,

we got a problem booting from our eMMC (THGBMJG9C8LBAU8) memory and we cannot figure out how to solve it.

The Silicon Revision seem to be "Z". Attached you can the the ping pong between MPU (STM32MP151A) and eMMC. The initialization sequence is coming from the MPU and the eMMC also responds. But after that there is no follow-up. We have looked up the errata sheet (Link 2.3.8) and it seems there were problems with older silicon revisions but we are wondering if the issue still occurs with Z revision as the described behavior in the errata is very similar.

Attached you can find the command sequence observed by the logic analyzer and the BootRom Log.

Thanks,

Bernhard

Boot Rom Log:

< @ 00007504 | [INFO] - BOOTCORE_BootRomMaskVer ( 0x00000000 ) >
< @ 00008800 | [INFO] - BOOTCORE_BootRomVer ( 0x00000102 ) >
< @ 00009976 | [INFO] - BOOTCORE_FreezeIWDG12Clocks >
< @ 00011335 | [INFO] - BOOTCORE_HwResetPOR >
< @ 00024986 | [INFO] - BOOTCORE_ChipModeSecOpen >
< @ 00027401 | [INFO] - BOOTCORE_LogicalResetSystem >
< @ 00029159 | [INFO] - BOOTCORE_BootActionColdBootProcess >
< @ 00087777 | [INFO] - BOOTCORE_BootCfgOtpWordValue ( 0x00000000, 0x00000000 ) >
< @ 00089241 | [INFO] - BOOTCORE_BootPinsFirstSelEmmc >
< @ 00090304 | [INFO] - BOOTCORE_OtpPrimarySrcForceNothing >
< @ 00091326 | [INFO] - BOOTCORE_OtpSecondarySrcForceNothing >
< @ 00092431 | [INFO] - BOOTCORE_OtpBootSrcDisableMaskVal ( 0x00000000 ) >
< @ 00093565 | [INFO] - BOOTCORE_OtpBootUartInstanceDisableMaskVal ( 0x00000000 ) >
< @ 00095003 | [INFO] - BOOTCORE_eMmcUseSingle128KBytesBootPartition ( 0x00000000 ) >
< @ 00097374 | [INFO] - BOOTCORE_BootCfgAfmuxOtpWord1Value ( 0x00000000 ) >
< @ 00098738 | [INFO] - BOOTCORE_BootCfgAfmuxOtpWord2Value ( 0x00000000 ) >
< @ 00100154 | [INFO] - BOOTCORE_BootCfgAfmuxOtpWord3Value ( 0x00000000 ) >
< @ 00101636 | [INFO] - BOOTCORE_BootCfgHseValue ( 0x00000000 ) >
< @ 00104698 | [INFO] - BOOTCORE_EnabledSrcMaskVal ( 0x00000648 ) >
< @ 00106050 | [INFO] - BOOTCORE_BootModeCOLDBOOT >
< @ 00640347 | [INFO] - BOOTCORE_StartupWaitTime ( 0x00002700 ) >
< @ 00641882 | [INFO] - BOOTCORE_NoCpuPllOtpBitValue ( 0x00000000 ) >
< @ 00644117 | [INFO] - BOOTCORE_Pll12StartNotDisabledByOtpBit >
< @ 00646191 | [INFO] - BOOTCORE_Pll1Started >
< @ 00650911 | [INFO] - BOOTCORE_Pll1Locked >
< @ 00652281 | [INFO] - BOOTCORE_Pll2Started >
< @ 00657076 | [INFO] - BOOTCORE_Pll2Locked >
< @ 00658674 | [INFO] - BOOTCORE_CkMpuSsSwitchedOnPll1 >
< @ 00660148 | [INFO] - BOOTCORE_CkAxiSsSwitchedOnPll2 >
< @ 00660729 | [INFO] - BOOTCORE_Pll12StartReqStatusPllStarted >
< @ 00695387 | [ERR ] - MMC_CmdTimeoutErr >
< @ 00710739 | [INFO] - BOOTCORE_HseDigBypassDetected >
< @ 00716219 | [INFO] - BOOTCORE_HseFrequencyDetected ( 0x00000018 ) >
< @ 00716612 | [INFO] - USB_Init >
< @ 00787264 | [INFO] - BOOTCORE_PllUsbLocked >
< @ 04378713 | [INFO] - UART_PeripheralSerialBootLoopStart >

0693W000008vt2JQAQ.jpg

3 REPLIES 3
PatrickF
ST Employee

Hi,

I assume the eMMC was flashed using STM32CubeProgrammer without issues. Do you confirm ?

Did you use standard pins for eMMC boot (PE3 = CLK, PG6 = CMD, PB14 = DAT0) ? see AN5031.

In your plot, I see DAT0 is always low, whereas it should be high (missing pull-up ? bad probing ?).

You must see the following sequence (eMMC JEDEC Standard No. 84-B51)

  1. clock is established (approx. 16MHz in case of STM32MP1 boot)
  2. few toggling from STM32MP1 on CMD line (GO_PRE_IDLE_STATE command  = CMD0 + 0xF0F0F0F0F0)
  3. after few us, the STM32MP1 will force CMD low (this is the eMMC boot request)
  4. then within 50ms, the eMMC should respond on DAT0 with an ACK (Start bit + 010 + End bit)
  5. then within 1second, the eMMC should provide boot partition data on DAT0.

Here, the STM32MP1 BootROM exit on timeout on point 4) as there is no ACK from eMMC.

The issue you mention in the Errata is corrected on Rev.Z

Regards.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
desteibe
Associate

Hi Patrick,

yes, we use the standard pins and yes we do not get the ACK on our side. We have found a hardware issue causing this and we are working on a fix. After this it should work fine.

One last question: Is it okay to boot up the eMMC with 1V8 IO voltage or is it similar to the SD cards that at the beginning 3V3 IO voltage is mandatory before switching to 1V8 IO (level shifter mandatory) for higher speed modes?

Thanks for your quick initial help!

Bernhard

No issue to boot eMMC with 1.8V IOs (assuming your VDD is 1.8V). Most (all?) eMMC are dual supply and have a VCCQ (which is usually connected to MP1 VDD) and a VCC supply (usually 3/3.3V) which might be shutdown to save power in Standby.

There is no IO voltage switch support/need on eMMC (thanks to dedicated VCCQ pin which lack on SD-Card),

Regards.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.