
何故かライブラリのコンフリクトが多発してコンパイルを完了出来ない。
原因は、SdFatとGFX_Library_for_Arduinoで、現在 Tennsyduino1.57 で使用している Arduino_GFX と SD とコンフリクトが発生してしまうようだ。

しかも、追加されたライブラリの影響を受けて、ライブラリ・フォルダを共有しているTeensyduinoでもコンパイルが通らなくなってしまった。
Arduino2.0のアラートに不具合が指摘された SdFat と GFX_Library_for_Arduino を削除することで、とりあえず問題は解決するのだが、、、

やはり専用のTeensyduinoを使った方が安全との結論に達している。
一方、本家のTLでは、コンフリクトやメモリ管理の問題は認識されていないようで、やはり自分のやっていることが特殊なのかもしれない。
ただし、今後は開発ツールの主流がJAVAに依存しない新版Arduinoに移行していくと予想されるので、出来るだけ早い段階でプログラム側に変更を行って対処するのが得策と思われる。
そこで、試しにプログラムの書き直しにトライしてみたのだが、

直すべき項目は一通り判明していて、、、


なんとかコンパイルを通すところまでは辿り着けた。
が、残念ながらArduino2.0ではRAMの扱いが破綻してしまい、乗り換えが困難なことが判った。

新しいライブラリに於いては、表示系のデータの扱いがSDカードの直接読み出しから一旦RAMにストアする形式に変更された可能性が高く、これが破綻に至った原因と思われる。
つまりトラブルの発生は、GFX_Library_for_Arduinoに起因することになる。 RAMの消費対策としては、mallocにbufを展開して、そこにデータをストアする、もしくはPRGMEMから直接データを読み出す方法が考えられるが、実行のハードルは高そうだ。
今後は、開発元のArduino_GFXのアップデートも警戒の対象にすべきだろう。
ちなみに現在使用している Arduino_GFX のヴァージョンは 1.15 で、流石にこれは少々旧過ぎる感があり、この機会により新しいヴァージョンを試すことにした。
まず、ヴァージョンを最新の Ver.1.28 に上げた状態で、、、

IDEをTeensyduinoに変更した場合に、メモリ管理の問題が解決しないことを確認した。

次に、ヴァージョンを 1.25 まで落とした場合でも、同様の不具合が発生した。

RAM管理の破綻が発生するライヴラリ Arduino_GFX_Library.h は、ポート指定の記述に SCK/MISO/MOSI の設定項目が書き加えられている。

ちなみに、jpegに処理を行う過程で参照するファイルを敢えて「旧いもの」に設定した場合、

読み出す画像に不具合が出るものの、メモリの破綻それ自体は発生しない。
jpeg画像が正常に表示されるかどうかの見極めは簡単で、Arduino_GFX_Library.h の設定項目に SCK/MOSI/MISOが含まれないヴァージョンを使用するとよい。

現状で、画像表示に問題が発生しない最新のヴァージョンは、1.21 ということになった。

以上の状況証拠から、不具合が発生する原因は "JpegFunc.h" にあり、このファイル内のメモリの割振りによって、破綻が生じている可能性が高い。
不具合の発生は、自分の用法のようなメモリの消費がカツカツなケースに於いて発生するので、次のアップデートでこの問題が解消される可能性は低いだろう。