2021-03-03 12:28 AM
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 >
2021-03-03 12:54 AM
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)
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.
2021-03-09 05:28 AM
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
2021-03-09 06:36 AM
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.