ميزانية Flash وRAM
أين تذهب ذاكرة 1MB و~23KB من الكومة وكيفية إبقاء البناء دون 60% فلاش / 65% RAM.
ميزانية الفلاش
تهيمن WebUI على ذاكرة فلاش ESP8285 البالغة 1 ميغابايت: فبنية العميل المجمّعة ~160 كيلوبايت مضغوطة (~16% من الفلاش) بعد إزالة الشجرة. زمن تشغيل الأعداد العائمة (_scanf_float، _printf_float، _dtoa_r، _strtod_l …) هو ~9.7 كيلوبايت — حقيقي لكنه ليس الرافعة الأكبر. يقع خط الأساس الحالي عند ~68.6% من الفلاش؛ وهدف 60% يتطلب اقتطاع ~83 كيلوبايت، وWebUI هي الرافعة الوحيدة الكبيرة بما يكفي لبلوغه.
ميزانية RAM
يعرض ESP8285 نحو 23 كيلوبايت من الكومة. يجب ألا تخصّص عمليات حفظ الإعداد مستند JSON كبيراً في الكومة — فحافظ إعداد الأورنيثوبتر يكتب مباشرةً إلى LittleFS لتجنب استنزاف الكومة وإعادة التشغيل أثناء الاستطلاع. أبقِ DynamicJsonDocument خارج المسار الساخن؛ وفضّل مخازن المكدس والكتابة المباشرة.
نصائح التحسين
- أزل (tree-shake) صفحات ELRS-RX غير المستخدمة من حزمة WebUI.
- تجنّب تسلسل
Stringفي الحلقات — فهو يجزّئ الكومة. - بثّ JSON إلى LittleFS باستخدام
File::printبدلاً من بناء المستندات. - أبقِ تنسيق الأعداد العائمة خارج المسار الساخن للتليمتري (أعداد صحيحة مسبقة التحجيم).
- فضّل الوحدات المُبوَّبة بـ
#ifdef(يُترجم Zephyrus إلى no-ops عند غيابه).
أهداف البناء
| الهدف | ميزانية الفلاش | ميزانية الذاكرة |
|---|---|---|
| PteronautOS_ESP8285_2400_RX | ≤ 60% | ≤ 65% |
يمنع البيان تجاوز 60% فلاش / 65% ذاكرة لترك هامش للتوسع. قِس بعد كل ميزة؛ فالبنية الخضراء ليست بنية حية حتى تُومض ويُقرأ سجل إقلاعها.