Repository navigation
Keep the image small enough for cubes on the old partition table - #86
Merged
Merged
Conversation
A cube still on v0.6.0-b1 downloaded v0.6.1 to 99% and failed with ESP_ERR_INVALID_SIZE, through the GitHub updater and the upload card alike. It has Arduino's min_spiffs.csv partition table, whose app slots are 0x1E0000 bytes; partition tables only change over USB, so it kept that layout through every OTA update. b1 fit with 57 KB to spare; telemetry and lost mode took v0.6.0 to 1,983,728 bytes, 17 KB over. Reproduced on a cube flashed with that table: "GitHub update failed (1966080 of 1983728 bytes): ESP_ERR_INVALID_SIZE". Silent assertions drop each assert's file name and expression strings, about 59 KB, with no cost in speed. scripts/size_guard.py fails the build if the image outgrows the old slot again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tests124/124 passed.
|
Static analysisNo defects found.
|
Firmware size+28.4 KB across 1 environment.
|
| Section | Base | Head | Δ |
|---|---|---|---|
.flash_rodata_dummy |
1.19 MB | 1.25 MB | +64.0 KB |
.flash.text |
1.18 MB | 1.23 MB | +58.2 KB |
.flash.rodata |
517.6 KB | 496.4 KB | -21.3 KB |
.dram0.dummy |
87.5 KB | 82.8 KB | -4.8 KB |
.iram0.text |
102.4 KB | 97.7 KB | -4.7 KB |
.dram0.data |
23.8 KB | 20.0 KB | -3.9 KB |
.dram0.bss |
37.8 KB | 37.9 KB | +184 B |
.iram0.text_end |
61 B | 37 B | -24 B |
esp32-s3-devkitc-1 — 1136 symbol(s) changed
| Symbol | Base | Head | Δ |
|---|---|---|---|
esp_mqtt_task |
0 B | 4.5 KB | +4.5 KB |
Telemetry::publishBoot() |
0 B | 2.8 KB | +2.8 KB |
Telemetry::publishCrash(bool) |
0 B | 2.8 KB | +2.8 KB |
Telemetry::scanInto(ArduinoJson::V743PB22::JsonArray, int) |
0 B | 2.1 KB | +2.1 KB |
esp_mqtt_set_config |
0 B | 2.0 KB | +2.0 KB |
_ZNK11ArduinoJson8V743PB226detail11VariantData6acceptINS1_14JsonSerializerINS1_6WriterI6StringvEEEEEENT_11result_typeERS9_PKNS1_15ResourceManagerE$isra$0 |
1.5 KB | 3.4 KB | +2.0 KB |
Telemetry::publishSettings() |
0 B | 1.9 KB | +1.9 KB |
__func__$0 |
2.0 KB | 256 B | -1.8 KB |
ws_read |
0 B | 1.5 KB | +1.5 KB |
Telemetry::publishLocation() |
0 B | 1.5 KB | +1.5 KB |
__func__$1 |
1.6 KB | 161 B | -1.4 KB |
packet$5 |
0 B | 1.4 KB | +1.4 KB |
packet$6 |
1.4 KB | 0 B | -1.4 KB |
tcp_connect |
638 B | 2.0 KB | +1.4 KB |
Telemetry::publishHealth() |
0 B | 1.4 KB | +1.4 KB |
| +1121 more |
Baseline: ec0c25b. Image size is firmware.bin against the smaller app partition slot. RAM is static allocation only — the linker cannot see heap or stack.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A cube still on v0.6.0-b1 downloads v0.6.1 to 99% and then fails, through both the GitHub updater and the dashboard upload card (
ESP_ERR_INVALID_…on the card).It has Arduino's old
min_spiffs.csvpartition table, whose app slots are 0x1E0000 = 1,966,080 bytes. Partition tables only change over USB, so it kept that layout through every OTA update. b1 (1,908,496 bytes) fits; telemetry and lost mode took v0.6.0/v0.6.1 to 1,983,728 bytes, 17 KB over. 1,966,080 / 1,983,728 = 99.1%.Reproduced here by flashing that partition table and b1 to a cube:
Fix
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT: assertions still stop the cube, but no longer compile in each one's file name and expression. About 59 KB smaller, no speed cost. (-Oswould save more but slows rendering.)scripts/size_guard.py: fails the build iffirmware.binoutgrows the old 0x1E0000 slot again.Local build: 1,915,936 bytes, 50 KB under the old slot.
🤖 Generated with Claude Code