概要

ESP-WROOM-32で、プログラムを書き込む容量を増やす方法をまとめた。


背景と目的

ESP-WROOM-32で、あるプログラムを書き込もうとしたところ、以下のように

"最大1310720バイトのフラッシュメモリのうち、スケッチが1333771バイト(101%)を使っています。"

と表示され書き込みができなかった。そこで、容量を増やす方法について調べ、実際に増やしてみる。


詳細

0.方法を知る

Web各所で情報を探し回ったところ、

などがあったが、いろいろ試行錯誤した結果、結論から言うと、以下の2手順が必要ということがわかった。

  • tools/partitions/default.csvの編集
  • boards.txtの編集

ということで、以下順に行う。


1.tools/partitions/default.csvの編集

default.csvを開くと、以下のような記述が出てくる。

# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0x140000,
app1,     app,  ota_1,   0x150000,0x140000,
eeprom,   data, 0x99,    0x290000,0x1000,
spiffs,   data, spiffs,  0x291000,0x16F000,

app0からspiffsという4行分を編集する。プログラム書き込み領域を0x20000 = 131072byte増加させることにすると、

# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0x160000,
app1,     app,  ota_1,   0x170000,0x160000,
eeprom,   data, 0x99,    0x2D0000,0x1000,
spiffs,   data, spiffs,  0x2D1000,0x12F000,

という感じで、app0とapp1のsizeを0x20000増やし、spiffsのsizeは0x40000減らす。また、app1、eeprom、spiffsのoffsetをそれぞれ0x20000だけずらせばよい。


2.boards.txtの編集

arduino-esp32のrootにあるboards.txtを開くと、10行目くらいにある

esp32.upload.maximum_size=1310720

という記述がある。書き込み時に

"最大1310720バイトのフラッシュメモリのうち、・・・"

の数値だ。これを所望のサイズに変更する。今回は、先ほどpartitions/default.csvで0x20000 = 131072byte増加させたので、こちらも同様に1310720 + 131072となるように変更。

esp32.upload.maximum_size=1441792

3.動作確認

上記の作業をして、プログラム書き込みを行ったところ、以下のように最大サイズが変更され、以前収容できなかったプログラムを書き込むことができた。というわけで成功。

最大1441792バイトのフラッシュメモリのうち、スケッチが1333771バイト(92%)を使っています。


まとめ

ESP-WROOM-32で、プログラムを書き込む容量を増やすことができた。