When evaluating the LPC55S69-EVK, I noticed significantly slower read/write speeds with Zephyr’s USB mass storage (using the SDIF driver) compared to the MCUXpresso SDK example.
Benchmark Results
Below are the performance comparisons using CrystalDiskMark 8.0.6:
1. MCUXpresso SDK Example (lpcxpresso55s69_dev_msc_disk_freertos_cm33_core0)
[Read]
SEQ 1MiB: 10.903 MB/s | RND 4KiB: 4.204 MB/s
[Write]
SEQ 1MiB: 7.756 MB/s | RND 4KiB: 3.286 MB/s
2. Zephyr (Legacy USB Stack)
[Read]
SEQ 1MiB: 1.048 MB/s | RND 4KiB: 0.985 MB/s
[Write]
SEQ 1MiB: 0.209 MB/s | RND 4KiB: 0.351 MB/s
~10x slower than MCUXpresso SDK.
3. Zephyr (USB Device Next Stack)
[Read]
SEQ 1MiB: 1.676 MB/s | RND 4KiB: 1.489 MB/s
[Write]
SEQ 1MiB: 0.628 MB/s | RND 4KiB: 0.830 MB/s
*Still ~5-6x slower than MCUXpresso SDK.*
Debugging Attempts
Enabled Zephyr SDHC & SD card logs – no errors detected.
Confirmed SD card initialization (3.3V, 50MHz clock, correct block size).
Logs show successful SDIF clock configuration (24MHz → 50MHz).
[00:00:00.000] <dbg> sd: sd_init_io: Host controller support 3.3V max
[00:00:01.000] <dbg> sdif: mcux_sdif_set_io: SDIF clock set to 400000
[00:00:01.376] <dbg> sd: sdmmc_read_csd: Card block count 124735488, block size 512
[00:00:01.376] <dbg> sdif: mcux_sdif_set_io: SDIF clock set to 24000000
[00:00:01.379] <dbg> sd: sdmmc_set_bus_speed: Setting bus clock to: 50000000
Environment
Are their any Kconfig option or overlay that I need to modify ?
I’d appreciate any insights or suggestions to debug this further
Thanks in advance!