IMX8MP always boots from eMMC boot0, cannot boot from eMMc partition mmcblk2p1

Hi,

I am working with a SolidRun i.MX8MP board. I have the default image (core-image-inimal-imx8mpsolidrun.wic.zst) flashed to both SD card and eMMC. I want the board to boot from eMMC user partition 1 (mmcblk2p1) but it boots from mmcblk2boot0 .

Observations

Booting from SD card:

mmc dev
switch to partitions #0, OK
mmc1 is current device

SD card boots correctly from the user partition.

Kernel loads imx8mp-hummingpulse.dtb

Custom changes I made in U-Boot (e.g., board messages, DTB selection) are reflected.

Booting from eMMC:

mmc dev
switch to partitions #0, OK
mmc2(part 0) is current device

U-Boot loads from boot0.

Default DTB imx8mp-cubox.dtb is loaded not imx8mp-hummingpulse.dtb.

Changes I made in U-Boot are not reflected at all.

eMMC info:

mmc info
Boot area 0: 4 MiB
Boot area 1: 4 MiB
User area: 29.1 GiB
Boot areas not write-protected

I tried Setting U-Boot variables alone but its not working

setenv mmcdev 2
setenv mmcpart 1

Uboot still loaded from boot0 — user partition changes ignored.

I stop U-Boot during startup using the UART console and print boot_targets; the output is (mmc1 mmc2 usb pxe dhcp). I change it to mmc2 mmc1 usb pxe dhcp using setenv and save it with saveenv. After reflashing a new image, I check boot_targets again, and it still shows mmc2 mmc1 usb pxe dhcp, so the changes I made persist even after flashing the new image

This confirms that ROM always executes boot0, never the user partition.

Is there any way I can boot from eMMC partition(mmcblk2p1) ?

Thanks