M5stackで使えるメモリ容量を大きくとりたい

M5stackでビルドした時に必要メモリサイズが出力されますが、なぜか搭載メモリ(Flash)サイズに比較してずいぶん小さい。

やりたいことは色々なセンサーの種類をsetup()ルーチン中で判別して必要なコードにloop()から呼び出しをするということなので、センサーの種類が増えていくとメモリをどんどん消費していくから。

写真の場合にはmDNSを使おうとした場合ですが、ライブラリのサイズが大きいようで既に6割以上を消費しています。

実際のメモリは16MB搭載しているはずですが、1.3MBぐらいしか使えないことになっています。もちろん基本のファームウェア領域も存在するんだろうけど、それにしては少なすぎ。

これを拡張するには、ボードの種類をM5Stack-Core-ESP32からM5Stack-fireにすると拡大します。ただしこれでも見えるサイズは6.5MBぐらいなので搭載メモリの半分以下ですが、5倍に拡大されたと思えば大幅改善で、さらにRAM領域はおよそ10倍に拡張されているので、おそらくRAM領域は不足するような事態には特別にRAM領域を消費するようなコードを書かない限りは大丈夫そうです。

ボード種類を変えることによる副作用は今のところ見えていません。このやり方はArduino IDEに限らずVScodeのPlatformIOでも同じです。

M5stackでもコードは起動後は不変だからFlash領域を使用して、変数やスタック領域などの書き換え必要な領域にはRAM領域を使用するようになっています。

 

admin