I'm using arduino-cli to program an ESP32-S2. If I compile my sketch using the default partition scheme
> arduino-cli compile -b esp32:esp32:esp32s2 sketcha lot of space is allocated for SPIFFS and OTA, which I don't use.
Sketch uses 646558 bytes (49%) of program storage space. Maximum is 1310720 bytes.Global variables use 39540 bytes (12%) of dynamic memory, leaving 288140 bytes for local variables. Maximum is 327680 bytes.Thus. I'd like to use thehuge_app scheme, as defined in the boards.txt:
esp32s2.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)esp32s2.menu.PartitionScheme.huge_app.build.partitions=huge_appesp32s2.menu.PartitionScheme.huge_app.upload.maximum_size=3145728However, selecting it doesn't have any effect:
> arduino-cli compile -b esp32:esp32:esp32s2 sketch --build-property build.partitions=huge_appSketch uses 646558 bytes (49%) of program storage space. Maximum is 1310720 bytes.Global variables use 39540 bytes (12%) of dynamic memory, leaving 288140 bytes for local variables. Maximum is 327680 bytes.Is my command line incorrect? Why is arduino-cli not using the specified partition scheme?
- 1according to platform.txt it is
build.custom_partitionsthe value is the selected partitioning from boards.txt2023-06-08 13:50:29 +00:00CommentedJun 8, 2023 at 13:50 - Thanks for your suggestion, I've checked platform.txt and found
custom_partitionsas well. Unfortunately, it didn't help:arduino-cli compile sketch --build-property build.custom_partitions=huge_appresults inSketch uses 646558 bytes (49%) of program storage space. Maximum is 1310720 bytes.larsb– larsb2023-06-08 14:11:55 +00:00CommentedJun 8, 2023 at 14:11 - Are you uploading the bin file by arduino-cli?matias samuel miranda– matias samuel miranda2023-07-25 23:06:26 +00:00CommentedJul 25, 2023 at 23:06
2 Answers2
So, it turns out I have to add another build property:
> arduino-cli compile --build-property build.partitions=huge_app --build-property upload.maximum_size=3145728 sketchwhere theupload.maximum.size is from theboards.txt file. Indeed, a maze of twisty little files, all alike.
An alternative solution is to append menu options to the fully qualified board name (FQBN), with the first separated by another colon (:) and the remainder separated with commas.
e.g.arduino-cli compile -b esp32:esp32:esp32s3:PartitionScheme=huge_app,DebugLevel=verbose
The ordering doesn't matter, just match the menu section names (as key) to the subsection names (as value).
Find the entries inboards.txt from arduino-esp32, or with something like
arduino-cli board details --fqbn=esp32:esp32:esp32s3 --config-file C:\Users\tyeth\.arduinoIDE\arduino-cli.yaml(you can add board manager urls as args but config file is easier and often already there).
--additional-urls="https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json,https://adafruit.github.io/arduino-board-index/package_adafruit_index.json,http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json"The other bit that threw me in the past was if using a custom build of arduino-lib-builder for esp then your FQBN beginsespressif: notesp32:
Explore related questions
See similar questions with these tags.