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
How much flash memory does my ESP32 really have
Re: How much flash memory does my ESP32 really have
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
Wroom32 has 4MByte by default but it is possible they used custom order to get 16MB. Use esptool to check flash
Re: How much flash memory does my ESP32 really have
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
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
Re: How much flash memory does my ESP32 really have
"esptool.py --port PORT flash_id" should print the detected flash size from the module.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.
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.
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.
However, it's worth checking just in case.
Re: How much flash memory does my ESP32 really have
Thanks...
So the bad news is that the dev board actually only has 4 MB:
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?
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?
Re: How much flash memory does my ESP32 really have
Sorry to hear that. Letting the seller know sounds like a good option.
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
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.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?
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: Google [Bot] and 121 guests