We are having a problem flashing our new batch of boards based on OSD32MP157F using eMMC to boot.
Most of the boards flash and boot successfully but some boards remain in DFU mode after flashing completed successfully and does not reboot from eMMC.
I verified via UBoot all partitions are created and populated, this confirms eMMC is not empty/virgin.
I flashed with STM32CubeProgrammer v2.18.0 on Windows 11.
Power signal across the BOOT Switch appears to be OK for eMMC boot (010).
I read the OTP registers using UBoot fuse command and find that OTP3/CFG3 word is zero for all the working OK and DFU stuck devices. This confirms no change in OTP3/CFG3 registers.
Any help resolving this problem is much appreciated.
Can you post the boot logs related to the flashing of the eMMC(UART output when flashing is initiated in DFU mode).
From the information you provided, it looks like the interface between OSD32MP1 and eMMC is functional.
As you are able to get to u-boot, the first thing to check is whether the boot mode is correct. If you execute “md.l 0x50020000 1” in u-boot command line, it should tell you what the device thinks the boot mode configuration is(See SYSCFG_BOOTR register description in the Technical Reference Manual - RM0436).
As you have access to u-boot command line, you can run the command “run distro_bootcmd” to see if the board can use the eMMC to boot the rest of the way. If eMMC is flashed correctly for boot and rootfs partitions, it should boot to Linux command line with eMMC rootfile system.
It eMMC is programmed and the board boots correctly after executing distro_bootcmd, there may be an issue is the boot0 and boot1 partitions of the eMMC. Booting from eMMC depends on FSBL being programmed into mmcblk2boot0 and mmcblk2boot1 partitions of eMMC that are apart from the main eMMC partitions. These are marked read only by default, but needed for eMMC boot.
The register read for SYBOOT pins “SYSCFG_BOOTR = 0” indicates that the SoC is seeing 000b boot setting instead of 010b for eMMC. This register read is the reading from the SoC of the physical pin setting for BOOT pins. There is something wrong with the way the boot mode is being set. Can you check for shorts?
The boot from eMMC at u-boot shows good eMMC boot. So, eMMC looks like it is programmed. So, once the SoC sees the correct boot settings, it should be able to boot from the eMMC