Hi all,
We are integrating Radxa CM4 (RK3576) modules and are seeing a
consistent ~12-second boot time difference depending on the eMMC
vendor of the module:
- Modules with SanDisk SDINBDA6-64G: ~15.6 s before Linux kernel starts
- Modules with Micron equivalents: ~3.7 s
Same U-Boot binary, same kernel, same image. The gap sits entirely
in the U-Boot eMMC read phase. Linux performance is fine on both
chips once the kernel takes over.
Direct EXT_CSD readouts from both chips reveal several potentially
relevant differences that may explain the asymmetry — factors we
are currently exploring:
- SanDisk declares PWR_CL_200_360 = 0xDD (power class 13 for
8-bit HS400 @3.3V). Runtime POWER_CLASS is 0x0D on SanDisk after
Linux boot, 0x00 on Micron. The Linux MMC driver applies this
via mmc_select_powerclass(); we don’t see equivalent logic in the
U-Boot vendor driver. - CACHE_SIZE is 512 KiB on SanDisk vs 8192 KiB on Micron (16x).
Linux enables CACHE_CTRL at runtime on both; likely not enabled
during U-Boot phase. - BKOPS_EN is 0x02 (auto) on SanDisk vs 0x00 (off) on Micron.
- SanDisk declares MIN_PERF_R_8_52 = 0x0A (~40 MB/s minimum for
8-bit @52MHz per JEDEC); measured throughput during U-Boot is
~7.8 MB/s — well below the chip’s own declared minimum. - Rockchip AVL v1.95 lists SDINBDA6-64G as S/A (platform
compatibility test still pending) for RK3576, while Micron
equivalents are T/A.
We suspect the combination of missing power class configuration and
disabled internal cache during U-Boot is the primary contributor,
possibly compounded by BKOPS-induced latency variability.
Questions for the community:
- Anyone else with Radxa CM4 (or other RK3576 boards) seeing this?
- Anyone with SanDisk iNAND on other Rockchip platforms observing
similar U-Boot vs kernel performance asymmetry? - Anyone already patched U-Boot vendor MMC driver to apply
powerclass / cache_ctrl during init?
Thanks everyone for the help
Cheers.