M5StackでSDカードがやけに遅くなる

Raspberry Pi

明けましておめでとうございます。

今年もどうぞよろしくお願いします。

本年ブログ一発目が、デモ直前で悪戦苦闘した内容のメモです。

2021年の夏に作ったM5Stackのスケッチが、リコンパイルでSDアクセスがやけに遅くなってハマりました。

原因は、ボードマネージャのバージョンの更新の模様(Ver.2系)

ArduinoIDEにて、ツール→Core Debug Level : Warn

にしてビルドしたスケッチを転送して、実行。

シリアルコンソールに、

Load INI file.
[   429][W][sd_diskio.cpp:174] sdCommand(): no token received
[   531][W][sd_diskio.cpp:174] sdCommand(): no token received
[   631][W][sd_diskio.cpp:174] sdCommand(): no token received
INI file [ /setup.ini ] exists
[   732][W][sd_diskio.cpp:174] sdCommand(): no token received
[   832][W][sd_diskio.cpp:174] sdCommand(): no token received
[   933][W][sd_diskio.cpp:174] sdCommand(): no token received

と、エラーが頻発して、SDカードアクセスが遅くなります。

このエラーの中で、sleep(200)が呼ばれているので、呼び出しの度に遅くなっていく模様。

ツール→ボードマネージャにて、M5Stackのバージョンを1系(1.0.9)にすることで、復活しました。(根本原因解決では無い)

ここにたどり着くまで、

  1. SDカードの交換やフォーマットのやり直し
  2. IniFileの更新確認
  3. M5stackのライブラリ更新確認
  4. ライブラリソースの解析・・・

と、右往左往でした。(ちょっとの確認のつもりが、4時間かかった…💦)

該当するエラーで表示されている、

[sd_diskio.cpp:174] sdCommand(): no token received

のソースパスは、

~Library/Arduino15/packages/m5stack/hardware/esp32/2.0.2/libraries/SD/src/sd_diskio.cpp

このソースは、ボードマネージャに付属するソースなのですね。(Mac版)

エラー表示だけだったので、ソースの在処が分から無かったです。

原因は判明したものの、現在のスケッチがVer.2系では動かないので今後どうしようかは要検討となりました。とりあえずデモに間に合ったのでOK。

更新にて、SDアクセスが遅くなっている方は確認してみてください。

面倒なのは、当該エラーのコンソール表示はWARN以上にしておかないと見えません。

タイトルとURLをコピーしました