फ्लैश और RAM बजट
1MB फ्लैश और ~23KB हीप कहाँ जाते हैं, और 60% फ्लैश / 65% RAM सीमा के नीचे बनाए रखने का तरीका।
फ्लैश बजट
1 MB ESP8285 फ्लैश पर WebUI का दबदबा है: बंडल किया गया क्लाइंट बिल्ड ट्री-शेकिंग के बाद ~160 KB संपीड़ित (~फ्लैश का 16%) है। फ्लोट रनटाइम (_scanf_float, _printf_float, _dtoa_r, _strtod_l …) ~9.7 KB है — वास्तविक पर सबसे बड़ा लीवर नहीं। वर्तमान आधार फ्लैश ~68.6% पर है; 60% लक्ष्य के लिए ~83 KB की कटौती चाहिए, और WebUI ही इसे पाने लायक एकमात्र बड़ा लीवर है।
RAM बजट
ESP8285 लगभग 23 KB हीप उजागर करता है। कॉन्फ़िग सेव को कभी भी हीप पर बड़ा JSON दस्तावेज़ आवंटित नहीं करना चाहिए — ऑर्निथॉप्टर कॉन्फ़िग सेवर हीप खत्म होने और पोल के बीच रीबूट से बचने के लिए सीधे LittleFS में स्ट्रीम करता है। DynamicJsonDocument को हॉट पाथ से दूर रखें; स्टैक बफ़र और सीधे लेखन को प्राथमिकता दें।
अनुकूलन युक्तियाँ
- WebUI बंडल से अप्रयुक्त ELRS-RX पृष्ठों को ट्री-शेक करें।
- लूप में
Stringसंयोजन से बचें — यह हीप को खंडित करता है। - दस्तावेज़ बनाने के बजाय
File::printसे JSON को LittleFS में स्ट्रीम करें। - टेलीमेट्री हॉट पाथ से फ्लोट फॉर्मेटिंग को दूर रखें(पूर्व-स्केल किए पूर्णांक)।
#ifdef-गेटेड मॉड्यूल को प्राथमिकता दें(अनुपस्थिति में Zephyrus no-ops में संकलित होता है)।
बिल्ड टारगेट
| लक्ष्य | फ्लैश बजट | RAM बजट |
|---|---|---|
| PteronautOS_ESP8285_2400_RX | ≤ 60% | ≤ 65% |
मैनिफेस्ट विस्तार के लिए मार्जिन छोड़ने हेतु 60% फ्लैश / 65% RAM से अधिक करने से मना करता है। हर फीचर के बाद मापें; हरा बिल्ड तब तक जीवित बिल्ड नहीं है जब तक वह फ्लैश न हो और उसका बूट लॉग पढ़ा न जाए।