Presupuesto de Flash y RAM
A dónde van la flash de 1MB y los ~23KB de heap, y cómo mantener la compilación bajo 60% flash / 65% RAM.
Presupuesto de Flash
El flash de 1 MB del ESP8285 está dominado por la WebUI: el build de cliente empaquetado ocupa ~160 KB comprimidos (~16% del flash) tras el tree-shaking. El runtime de float (_scanf_float, _printf_float, _dtoa_r, _strtod_l …) es ~9,7 KB — real pero no la mayor palanca. La base actual ronda el 68,6% de flash; la meta del 60% exige un recorte de ~83 KB, y la WebUI es la única palanca lo bastante grande para lograrlo.
Presupuesto de RAM
El ESP8285 expone aproximadamente 23 KB de heap. Los guardados de configuración nunca deben asignar un documento JSON grande en el heap — el guardador de config del ornitóptero escribe directamente a LittleFS para no agotar el heap y reiniciar a mitad del sondeo. Mantén DynamicJsonDocument fuera de la vía caliente; prefiere buffers de pila y escrituras directas.
Consejos de optimización
- Elimina (tree-shake) páginas ELRS-RX no usadas del bundle de la WebUI.
- Evita la concatenación de
Stringen bucles — fragmenta el heap. - Transmite JSON a LittleFS con
File::printen lugar de construir documentos. - Mantén el formateo de float fuera de la vía caliente de telemetría (enteros pre-escalados).
- Prefiere módulos protegidos por
#ifdef(Zephyrus compila a no-ops cuando está ausente).
Objetivos de compilación
| Objetivo | Presupuesto de flash | Presupuesto de RAM |
|---|---|---|
| PteronautOS_ESP8285_2400_RX | ≤ 60% | ≤ 65% |
El manifiesto prohíbe superar 60% de flash / 65% de RAM para dejar margen de expansión. Mide tras cada función; un build verde no es un build vivo hasta que se flashea y se lee su log de arranque.