How to change partition table using VSCode and Arduino framework

Is there any more detailed description than what one can find here: Espressif 32 — PlatformIO latest documentation ?

According to this I have added the following line to my platformio.ini:

board_build.partitions = default_16MB.csv

which has these additional settings:

platform = espressif32
board = az-delivery-devkit-v4
framework = arduino

The board has 16 MB flash.
However, trying to change the flash size with the additional line will put it into reset loop:

rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac

Using anything else than default.csv will put it into the loop.
The default partition table works fine though. But it is only 1 MB.
I was using the blink example for this.
I also tried erasing. But it didn’t change the situation.
Seems like I am missing something?

What about default_8MB.csv? Does that lock up also?

1 Like

Yes. I tried several of the csv files. But same result for all of them.

[Edit] I actually only tested files >4 MB

1 Like

Can you manually execute esptool.py to check that the module has the actual 16MB flash? You can open a terminal (or [PIO Terminal]), cd into the path for esptool.py (usually C:\Users\<user>\.platformio\packages\tool-esptoolypy and execute

python esptool.py --port COM22 flash_id

where COM22 is the actual COM port where the ESP32 is connected. What does that output?

3 Likes

Thanks for the hint! It doesn’t actually have 16 MB. I believed this data sheet: https://cdn.shopify.com/s/files/1/1509/1638/files/ESP_-_32_NodeMCU_Developmentboard_Datenblatt_a3bf98d8-6a53-4d26-8f1c-c61b1c82af39.pdf?76837
as well as the PIO board info. However, in the terminal output it actually says that it detected only 4 MB. So next time I should look through the log more carefully. Here it is again just for completeness:

Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: Redirecting...
PLATFORM: Espressif 32 1.12.0 > AZ-Delivery ESP-32 Dev Kit C V4
HARDWARE: ESP32 240MHz, 520KB RAM, 16MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:

  • framework-arduinoespressif32 3.10004.200129 (1.0.4)
  • tool-esptoolpy 1.20600.0 (2.6.0)
  • tool-mkspiffs 2.230.0 (2.30)
  • toolchain-xtensa32 2.50200.80 (5.2.0)
    LDF: Library Dependency Finder → ly/configure-pio-ldf
    LDF Modes: Finder ~ chain, Compatibility ~ soft
    Found 26 compatible libraries
    Scanning dependencies…
    No dependencies
    Building in release mode
    Generating partitions .pio\build\az-delivery-devkit-v4\partitions.bin
    Linking .pio\build\az-delivery-devkit-v4\firmware.elf
    Retrieving maximum program size .pio\build\az-delivery-devkit-v4\firmware.elf
    Checking size .pio\build\az-delivery-devkit-v4\firmware.elf
    Advanced Memory Usage is available via “PlatformIO Home > Project Inspect”
    RAM: [ ] 2.9% (used 15436 bytes from 532480 bytes)
    Flash: [= ] 6.9% (used 216641 bytes from 3145728 bytes)
    Configuring upload protocol…
    AVAILABLE: esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
    CURRENT: upload_protocol = esptool
    Looking for upload port…
    Auto-detected: COM6
    Uploading .pio\build\az-delivery-devkit-v4\firmware.bin
    esptool.py v2.6
    Serial port COM6
    Connecting…
    Chip is ESP32D0WDQ6 (revision 1)
    Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
    MAC: 24:6f:28:97:41:d0
    Uploading stub…
    Running stub…
    Stub running…
    Changing baud rate to 460800
    Changed.
    Configuring flash size…
    Auto-detected Flash size: 4MB

It supports 16 MB external flash, but internal flash size is 4 MB. Small but important detail :smiley:
Would be a good idea, to have this info also in the board details.

1 Like

It’s also very confusing to me how this module is described as 16MB in its datasheet when it has an ESP-WROOM-32 module for which Espressif says

Note that even PlatformIO has copied that flash size

Though when I look at their german distributor site they officiall comment:

How big is the Flash memory of this module? Is that SRAM actually 512 kb big?

Dear Customer, the difference in board layout do not have an influence on the specification of the chipset. The here used ESP-WROOM-32 is from Espressif and conforms to the technical specifications of the manufacturer, meaning 4MB internal flash with the support for up to 16MB external and 520 KB SRAM, by which circa 8KB are used for the RTC. For further questions I’m at your service. Regards …

So yes, pretty sure that their “16MB Flash” is not a 16MB flash.

2 Likes

Really… they went… there? :face_vomiting: :man_facepalming:

Time to sell my PC motherboard with 16GB DDR4 RAM onboard as a 64GB motherboard online I guess. After all it can handle 64GB external memory :joy:

Hm… now I wonder what mine is… oh… damn… Max. 16 GB, DDR3… looks like I need an upgrade… drooling over some of the Ryzen benchmarks… since I’m still running a Intel i5 (first gen, Clarkdale)… should be a bit of a performance boost!