2023-04-18 3:16 AM
Hello everyone,
I have a custom board based on STM32MP157A (rev. Z) and I am trying to boot from emmc; I am able to boot sucessfully from SD card; I flashed the same image to the emmc with the ST MX Cube Programmer and, if get into u-boot from SD card, I am able to inspect the partitions and information of the emmc (see below), but whenever I set the boot pins to 010 I get no messages on the serial UART, while the emmc seems to be powered.
STM32MP> mmc list
STM32 SD/MMC: 0 (SD)
STM32 SD/MMC: 1 (eMMC)
STM32MP> mmc info
Device: STM32 SD/MMC
Manufacturer ID: 2
OEM: 544d
Name: SA04G
Bus Speed: 50000000
Mode: SD High Speed (50MHz)
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 3.6 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
STM32MP> mmc dev 1
switch to partitions #0, OK
mmc1(part 0) is current device
STM32MP> mmc info
Device: STM32 SD/MMC
Manufacturer ID: 45
OEM: 100
Name: DG400
Bus Speed: 52000000
Mode: MMC High Speed (52MHz)
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 7.3 GiB
Bus Width: 8-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 7.3 GiB WRREL
Boot Capacity: 4 MiB ENH
RPMB Capacity: 4 MiB ENH
Boot area 0 is not write protected
Boot area 1 is not write protected
STM32MP> mmc part
Partition Map for MMC device 1 -- Partition Type: EFI
Part Start LBA End LBA Name
Attributes
Type GUID
Partition GUID
1 0x00000400 0x000007ff "metadata1"
attrs: 0x0000000000000000
type: 8da63339-0007-60c0-c436-083ac8230908
guid: 1d916f8f-dbf8-4dd4-b00b-03114253c37c
2 0x00000800 0x00000bff "metadata2"
attrs: 0x0000000000000000
type: 8da63339-0007-60c0-c436-083ac8230908
guid: 4c35e57c-2ad5-4793-b393-2647bf924f3e
3 0x00000c00 0x00002bff "fip-a"
attrs: 0x0000000000000000
type: 19d5df83-11b0-457b-be2c-7559c13142a5
guid: 4fd84c93-54ef-463f-a7ef-ae25ff887087
4 0x00002c00 0x00004bff "fip-b"
attrs: 0x0000000000000000
type: 19d5df83-11b0-457b-be2c-7559c13142a5
guid: 09c54952-d5bf-45af-acee-335303766fb3
5 0x00004c00 0x00004fff "u-boot-env"
attrs: 0x0000000000000000
type: 8da63339-0007-60c0-c436-083ac8230908
guid: 5a80ceb4-38b5-4bfc-96fa-42d15ece1f4c
6 0x00005000 0x00024fff "bootfs"
attrs: 0x0000000000000004
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
type: linux
guid: d6a61178-d356-43d5-8f44-54504dd57cc0
7 0x00025000 0x0002cfff "vendorfs"
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
type: linux
guid: 6c954dc8-9c2b-4526-b7a0-4bf13941fd2e
8 0x0002d000 0x0019cfff "rootfs"
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
type: linux
guid: 491f6117-415d-4f53-88c9-6e0de54deac6
9 0x0019d000 0x00e90a7f "userfs"
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
type: linux
guid: 98857284-f810-4c4c-a986-8d12250746e9Moreover, I tried to force the boot over mmc1 from u-boot and the GUID matches the one above; my suspsect is that I am missing something in the <my-board>-u-boot-mx.dtsi file. Can you confirm this?
STM32MP> setenv boot_prefixes /mmc1_
STM32MP> setenv boot_devnum 1
STM32MP> setenv boot_instance 1
STM32MP> run bootcmd_mmc1
switch to partitions #0, OK
mmc1(part 0) is current device
Scanning mmc 1:6...
Found /mmc1_extlinux/extlinux.conf
Retrieving file: /mmc1_extlinux/extlinux.conf
291 bytes read in 86 ms (2.9 KiB/s)
Retrieving file: /splash_landscape.bmp
Failed to load '/splash_landscape.bmp'
There is no valid bmp file at the given address
1: OpenSTLinux
Retrieving file: /st-image-resize-initrd
29791031 bytes read in 731 ms (38.9 MiB/s)
Retrieving file: /uImage
7880688 bytes read in 259 ms (29 MiB/s)
append: root=PARTUUID=491f6117-415d-4f53-88c9-6e0de54deac6 rootwait rw console=ttySTM0,115200
Solved! Go to Solution.
2023-04-18 4:22 AM
We went through an HW revision and we found out the boot switch resistors were wrong. After fixing this, the boot from emmc worked flawlessly. Topic closed!
2023-04-18 4:22 AM
We went through an HW revision and we found out the boot switch resistors were wrong. After fixing this, the boot from emmc worked flawlessly. Topic closed!
2024-09-09 11:03 PM
Hi @bimorqt
could you please let me know where you changes the code that it will boot from the emmc not from the sd card
currently i am facing this issues , where i need to modify the code that it boot from the emmc not from the sdcard,
actually in my custom board there i will added the emmc to mmc2 channel (but the stm32mp157d-dk1 there is no emmc , but in my custom board the emmc is present so how to boot from the emmc i activate the channel of mmc2 in device tree) .
2026-03-08 4:27 AM
Hi,
First of all, it is important to understand that the boot mode selection is primarily and foremost driven by the boot straps (hardware pins). The ROM code reads these straps and decides what to boot from, this is the very first thing that happens.
Now, in a bring-up context specifically, even if you set the boot straps to eMMC, the board will fall back to DFU mode if the ROM code fails to boot from the eMMC. This can happen for several reasons, such as:
- Incompatible supply voltage on the eMMC
- Wrong device tree configuration
- Any other issue preventing the ROM from successfully booting off the eMMC
In that case, the ROM automatically falls back to DFU mode, this is expected behavior and very common during bring-up.
A second (much less likely) scenario is forcing the boot mode via OTP fuses. However, in a bring-up situation, this is highly unlikely since the OTPs are generally untouched at that stage.
Regarding your question about booting from eMMC instead of SD card on your custom board, since you are adding eMMC on the MMC2 channel, you need to:
1. Make sure the boot straps are correctly set to point to eMMC
2. Ensure the eMMC is properly configured in your device tree (which it sounds like you are already working on by enabling the MMC2 channel)
3. Verify the eMMC supply voltage and initialization parameters are correct, as any misconfiguration here will cause the ROM to fall back to DFU.
BR,
Yassine