Budget Flash et RAM
Où vont la flash de 1 Mo et les ~23 Ko de tas, et comment rester sous 60 % flash / 65 % RAM.
Budget Flash
Le flash 1 Mo de l’ESP8285 est dominé par la WebUI : le build client empaqueté fait ~160 Ko compressés (~16% du flash) après tree-shaking. Le runtime float (_scanf_float, _printf_float, _dtoa_r, _strtod_l …) fait ~9,7 Ko — réel mais pas le plus gros levier. La base actuelle est à ~68,6% de flash ; l’objectif de 60% exige une coupe de ~83 Ko, et la WebUI est le seul levier assez grand pour l’atteindre.
Budget RAM
L’ESP8285 expose environ 23 Ko de tas. Les sauvegardes de config ne doivent jamais allouer un gros document JSON sur le tas — le sauveur de config de l’ornithoptère écrit directement dans LittleFS pour éviter d’épuiser le tas et de redémarrer en plein sondage. Gardez DynamicJsonDocument hors du chemin chaud ; préférez les tampons de pile et les écritures directes.
Conseils d'optimisation
- Élaguez (tree-shake) les pages ELRS-RX inutilisées du bundle WebUI.
- Évitez la concaténation de
Stringdans les boucles — elle fragmente le tas. - Diffusez le JSON vers LittleFS avec
File::printau lieu de construire des documents. - Gardez le formatage float hors du chemin chaud de la télémétrie (entiers pré-mis à l’échelle).
- Préférez les modules sous
#ifdef(Zephyrus compile en no-ops quand absent).
Cibles de build
| Cible | Budget flash | Budget RAM |
|---|---|---|
| PteronautOS_ESP8285_2400_RX | ≤ 60% | ≤ 65% |
Le manifeste interdit de dépasser 60% de flash / 65% de RAM pour laisser une marge d’expansion. Mesurez après chaque fonctionnalité ; un build vert n’est pas un build vivant tant qu’il n’est pas flashé et que son journal de démarrage n’a pas été lu.