Ideal Reality

興味の赴くままに
  1. トップ
  2. 投稿
  3. M5Stack Tab5 SDカード読み取り速度の改善
add_22026年1月9日 22時29分

M5Stack Tab5 SDカード読み取り速度の改善

前回、以下の記事でSDカードの読み込み速度を測定したのですが、思ったように速度が出ませんでした。

M5Stack Tab5でSDカード読み取り速度を測定してみた

現在、 Tab5-Media-Player のST7123対応とRGB888描画とパフォーマンス調整とUIの作り替えなどの作業を行なっています。 現状の実装だとSDカードのReadが間に合わず、それな...

色々調整することで大幅に速度が向上したので、そのメモです。

スポンサーリンク

FATFSのブロックサイズを増やす

そのままだとFATFSのブロックサイズはnewlibデフォルトの128バイトが使用されます。これだと小さすぎるので4096くらいに上げておきましょう。
sdkconfigファイルでいうと FATFS_VFS_FSTAT_BLKSIZE ってやつです。(初期値0)
4096より大きい値にしてもメモリ消費量が増えるだけでそんなに速度上がりませんでした。

バッファをキャッシュ境界に配置

uint8_t *buffer = (uint8_t *)heap_caps_malloc(131072, MALLOC_CAP_SPIRAM | MALLOC_CAP_CACHE_ALIGNED);

ファイルを読み出したデータを格納するバッファはキャッシュ境界に配置されるようにしましょう。SRAMである必要はなく、PSRAMでも大丈夫です。

スポンサーリンク

readの調整

read関数でデータを読み出すときはなるべく16KB単位で読み出すようにしましょう。
小さいサイズのデータを頻繁に読み出すのは遅いです。それこそ、シーケンシャルアクセスしていて先のデータが今後必要になるとわかっているなら、低優先度タスクで先読みしておくといいです。
また、C標準ライブラリのfreadは遅いので、fopenしてfreadしている場合はopenreadを使うようにしましょう。

以上、このあたりの調整を施すことで、SDカードにもよりますが 8MB/s ~ 10MB/sくらいまで出るようになりました。
これによって、Tab5-Media-PlayerではSDカードを使ってもスムーズに動画再生できるようになってます。
よかったよかった

共有

この記事が役に立ったならば、シェアしていただけると嬉しいです。

スポンサーリンク
関連する投稿
M5Stack Tab5 ST7123版で気になった変化点

2025/10頃にM5Stack Tab5のLCDコントローラーとTouchコントローラーがILI9881C+GT911からST7123の統合ICに変更になりました。 サプライチェーンの問題とかな...

2026年1月9日
M5Stack Tab5でSDカード読み取り速度を測定してみた

現在、 Tab5-Media-Player のST7123対応とRGB888描画とパフォーマンス調整とUIの作り替えなどの作業を行なっています。 現状の実装だとSDカードのReadが間に合わず、それな...

2025年12月31日
M5Stack Tab5のJPEGレンダリングの話

以下のように、M5Stack Tab5でJPEGレンダリングを使用するものをいくつか作っています。 https://github.com/Hiroki-Kawakami/Tab5-UVC-Displa...

2025年11月23日
M5Stack Tab5でPCとUSB高速通信

M5 Japan Tour 2025 Autumnで置いていたやつのUSB通信部分の解説です。 M5Stack Tab5に搭載されているESP32-P4は USB 2.0 High Speed (4...

2025年11月21日
プロフィール
Hiroki Kawakami

サイトを作り替えています

スポンサーリンク