明けましておめでとうございます。
今年もどうぞよろしくお願いします。
本年ブログ一発目が、デモ直前で悪戦苦闘した内容のメモです。
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)にすることで、復活しました。(根本原因解決では無い)
ここにたどり着くまで、
- SDカードの交換やフォーマットのやり直し
- IniFileの更新確認
- M5stackのライブラリ更新確認
- ライブラリソースの解析・・・
と、右往左往でした。(ちょっとの確認のつもりが、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以上にしておかないと見えません。