Associate III
January 25, 2026
Question
STM32MP157 – SD card works in ROM/TF-A (FSBL) but fails in U-Boot with CMD55 retries
- January 25, 2026
- 1 reply
- 201 views
Problem description
I have a custom board based on STM32MP157FAA.
The SD card boots perfectly in:
ROM boot
TF-A BL2 (FSBL)
But once control reaches U-Boot, the SD card becomes completely unusable and U-Boot shows continuous:
stm32_sdmmc2 mmc@58005000: cmd 55 failed, retrying ...
U-Boot cannot read environment, cannot rescan the card, and reports “No block device”.
This is very confusing because the same SD card and hardware clearly work during ROM and TF-A stages.
Boot log
TF-A / BL2 (working)
INFO: Using SDMMC INFO: Instance 1 INFO: Boot used partition fsbl1 ... INFO: BL2: Loading image id 5 NOTICE: BL2: Booting BL32
No SD errors at all.
U-Boot (failing)
U-Boot 2023.10-stm32mp-r2
MMC: STM32 SD/MMC: 0, STM32 SD/MMC: 1
Loading Environment from MMC...
stm32_sdmmc2 mmc@58005000: cmd 55 failed, retrying ...
*** Warning - No block device, using default environment ...
Saving Environment to MMC... No block device
MMC: STM32 SD/MMC: 0, STM32 SD/MMC: 1
Loading Environment from MMC...
stm32_sdmmc2 mmc@58005000: cmd 55 failed, retrying ...
*** Warning - No block device, using default environment ...
Saving Environment to MMC... No block device
Also in U-Boot:
Clocks:
- MPU : 0 MHz
- MCU : 0 MHz
- AXI : 0 MHz
- PER : 0 MHz
- DDR : 0 MHz
- MPU : 0 MHz
- MCU : 0 MHz
- AXI : 0 MHz
- PER : 0 MHz
- DDR : 0 MHz
Hardware notes
No external level shifter
No SD direction pin used
SD is wired directly to SDMMC1
Fixed 3.3V I/O
No card detect pin
Linux / TF-A SDMMC1 DTS (works)
&sdmmc1 {
status = "okay";
bus-width = <4>;
no-1-8-v;
vmmc-supply = <&vdd_sd>;
disable-wp;
broken-cd; };
status = "okay";
bus-width = <4>;
no-1-8-v;
vmmc-supply = <&vdd_sd>;
disable-wp;
broken-cd; };
PMIC regulator:
vdd_sd:ldo5{
regulator-name = "vdd_sd";
regulator-min-microvolt = <2900000>;
regulator-max-microvolt = <2900000>;
regulator-boot-on;
};
regulator-name = "vdd_sd";
regulator-min-microvolt = <2900000>;
regulator-max-microvolt = <2900000>;
regulator-boot-on;
};
No special SDMMC settings exist in the *-u-boot.dtsi.
You can check the included log for more infomations
