ESP32S3(ESP32-S3-WROOM-1-N16R8)に対してカスタムパーティションテーブルを使用した時に、リセットを繰り返すトラブルが発生したので、その対処方法を記録します。
背景
FLASH ROMが16MBあるので、ESP32 Partition Builderを用いて、下記のようなカスタムパーティションテーブルを作成しました。16MBを最後までしっかり使っています。
custom_partition.csv
# Name, Type, SubType, Offset, Size, Flags
nvs,data,nvs,0x9000,0x5000,
otadata,data,ota,0xE000,0x2000,
app0,app,ota_0,0x10000,0x700000,
app1,app,ota_1,0x710000,0x700000,
spiffs,data,spiffs,0xE10000,0x1E0000,
coredump,data,coredump,0xFF0000,0x10000,
platform.iniにて、custom_partition.csvを設定します。
platformio.ini
[env:esp32s3]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
board_build.partitions = custom_partition.csv
しかし、この設定でバイナリを書き込んだところ、下記ログを出力してリセットを繰り返すようになってしまいました。
rst:0x3 (RTC_SW_SYS_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
Saved PC:0x403cdb0a
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x4bc
load:0x403c9700,len:0xbd8
load:0x403cc700,len:0x2a0c
entry 0x403c98d0
原因と対策
platformio.iniに、FLASH ROMのサイズを指定していなかったことが要因です。
board設定がesp32-s3-devkitc-1の場合、デフォルトでは8MB品として扱われるようで、パーティション情報が正しく書き込まれていませんでした。
board_upload.flash_sizeにて16MBであることを明示したところ、リセット現象は解消されました。
[env:esp32s3]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
board_build.partitions = custom_partition.csv
board_upload.flash_size = 16MB