How much flash memory does my ESP32 really have

megabite
Posts: 18
Joined: Wed Nov 22, 2017 12:56 pm

How much flash memory does my ESP32 really have

Postby megabite » Sat Dec 30, 2017 8:40 pm

Hello,

I just got my ESP32 dev board in the mail a few days ago, and I am trying it out with a few things.

One thing that baffles me is that it apparently doesn't have 16 megabyte of flash memory as advertised.

It's an ESP32 WROOM 32 dev board, FCC ID: 2AC7Z-ESPWROOM32. Wikipedia says that this type of board has 4 MiB of flash memory. Which is already not really what the board was supposed to have as per the description from where I bought it.

And now when I try to upload sketches using the Arduino IDE, it tells me that maximum program memory is 1.310.720 bytes, and that the maximum of dynamic memory is 294.912 bytes, which isn't even 2 MB combined. I would suspect that some of the board's memory is "non-negotiable" as it is needed for the ESP32 core code, but still, does my board really not have the 16 megabyte of flash that it was advertised as??


- megabite

WiFive
Posts: 3529
Joined: Tue Dec 01, 2015 7:35 am

Re: How much flash memory does my ESP32 really have

Postby WiFive » Sun Dec 31, 2017 9:16 am

https://github.com/espressif/arduino-esp32/issues/703

Wroom32 has 4MByte by default but it is possible they used custom order to get 16MB. Use esptool to check flash

megabite
Posts: 18
Joined: Wed Nov 22, 2017 12:56 pm

Re: How much flash memory does my ESP32 really have

Postby megabite » Sun Dec 31, 2017 12:18 pm

thanks for the answer, but I think I still need a little help here.

What exactly do I type into the esptool prompt to get the actual flash size? When I type in check_flash, it gives me a list of positional and optional argument options, but then when I try to use those, somehow I can't type them in without getting too few/too many arguments errors.

Also, if my ESP32 does turn out to have 16 MB of flash, what do I put into my default.csv and boards.txt files? How do I alter them?

At the moment, this is what the default.csv contains:

# 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,

---------------

And this is what (part of) the boards.txt looks like:

esp32.upload.tool=esptool
esp32.upload.maximum_size=1310720
esp32.upload.maximum_data_size=294912
esp32.upload.wait_for_upload_port=true

esp32.serial.disableDTR=true
esp32.serial.disableRTS=true

esp32.build.mcu=esp32
esp32.build.core=esp32
esp32.build.variant=esp32
esp32.build.board=ESP32_DEV

esp32.build.f_cpu=240000000L
esp32.build.flash_size=4MB
esp32.build.flash_freq=40m
esp32.build.flash_mode=dio
esp32.build.boot=dio
esp32.build.partitions=default

esp32.menu.FlashMode.qio=QIO
esp32.menu.FlashMode.qio.build.flash_mode=dio
esp32.menu.FlashMode.qio.build.boot=qio
esp32.menu.FlashMode.dio=DIO
esp32.menu.FlashMode.dio.build.flash_mode=dio
esp32.menu.FlashMode.dio.build.boot=dio
esp32.menu.FlashMode.qout=QOUT
esp32.menu.FlashMode.qout.build.flash_mode=dout
esp32.menu.FlashMode.qout.build.boot=qout
esp32.menu.FlashMode.dout=DOUT
esp32.menu.FlashMode.dout.build.flash_mode=dout
esp32.menu.FlashMode.dout.build.boot=dout

esp32.menu.FlashFreq.80=80MHz
esp32.menu.FlashFreq.80.build.flash_freq=80m
esp32.menu.FlashFreq.40=40MHz
esp32.menu.FlashFreq.40.build.flash_freq=40m

esp32.menu.FlashSize.4M=4MB (32Mb)
esp32.menu.FlashSize.4M.build.flash_size=4MB
esp32.menu.FlashSize.2M=2MB (16Mb)
esp32.menu.FlashSize.2M.build.flash_size=2MB
esp32.menu.FlashSize.2M.build.partitions=minimal



Thanks,

- megabite

ESP_Angus
Posts: 2344
Joined: Sun May 08, 2016 4:11 am

Re: How much flash memory does my ESP32 really have

Postby ESP_Angus » Tue Jan 02, 2018 12:22 am

megabite wrote:thanks for the answer, but I think I still need a little help here.

What exactly do I type into the esptool prompt to get the actual flash size? When I type in check_flash, it gives me a list of positional and optional argument options, but then when I try to use those, somehow I can't type them in without getting too few/too many arguments errors.
"esptool.py --port PORT flash_id" should print the detected flash size from the module.

One thing that baffles me is that it apparently doesn't have 16 megabyte of flash memory as advertised.

It's an ESP32 WROOM 32 dev board, FCC ID: 2AC7Z-ESPWROOM32. Wikipedia says that this type of board has 4 MiB of flash memory. Which is already not really what the board was supposed to have as per the description from where I bought it.
The ESP32 (chip, not module) can support up to 16MB of flash. Most likely, the seller has copied this description into the dev board listing without understanding that the modules may integrate smaller flash chip sizes.

However, it's worth checking just in case. :)

megabite
Posts: 18
Joined: Wed Nov 22, 2017 12:56 pm

Re: How much flash memory does my ESP32 really have

Postby megabite » Tue Jan 02, 2018 10:17 am

Thanks...

So the bad news is that the dev board actually only has 4 MB:

Code: Select all

port COM31 flash_id
esptool.py v2.1
Connecting........__
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4016
Detected flash size: 4MB

The dev board came from a Chinese large-volume seller on eBay. I am going to write an e-mail to them right now to complain about their misleading product description.

For the time being, while I will be waiting for a reply from them: How do I now adjust the .csv partition table and boards.txt in my ESP32 Arduino core to at least give me access to those 4 MB?

ESP_Angus
Posts: 2344
Joined: Sun May 08, 2016 4:11 am

Re: How much flash memory does my ESP32 really have

Postby ESP_Angus » Wed Jan 03, 2018 6:29 am

Sorry to hear that. Letting the seller know sounds like a good option.
megabite wrote: For the time being, while I will be waiting for a reply from them: How do I now adjust the .csv partition table and boards.txt in my ESP32 Arduino core to at least give me access to those 4 MB?
I don't work on Arduino so you may need to ask separately in the Arduino forum to get a complete answer. But the default.csv file you posted looks like it is already a partition table for 4MB of flash - according to the "size" column (size in bytes) you have 1280KB per app slot for two app slots (allowing OTA updates), plus 1468KB for a SPIFFS filesystem, and some smaller partitions for other functions for a total of 4MB.

You can tweak these sizes or add/remove partitions in the .CSV if you want to change the balance of available space (say, have only a single app slot. Or add more space for SPIFFS). But this will depend on your exact requirements.

You can read more about the partition table .csv format here:
http://esp-idf.readthedocs.io/en/latest ... ables.html

Angus

Who is online

Users browsing this forum: Majestic-12 [Bot] and 15 guests