برنامه نویسی

چرا من به صورت پویا حافظه رم را برای کنترلر ساده قابل برنامه ریزی مبتنی بر ESP8266 تخصیص نمی دهم؟

Summarize this content to 400 words in Persian Lang
با استفاده از ESP8266 برای طراحی کنترلر برای برنامه نویسی اسکریپت، فکر می کنم فضای رم ESP8266 تنها 96 کیلوبایت است، اگر برنامه از طریق تخصیص حافظه پویا، حافظه را اشغال کند، روی راندمان اجرا و قابلیت اطمینان برنامه تأثیر می گذارد.

کنترلر دارای عملکردهای فراوان و کدهای پیچیده است، کنترل تخصیص و انتشار حافظه دشوار است، همچنین اطمینان از عدم تخصیص حافظه مشکل است، در این زمان، کنترل استثنا و انتظار برای حافظه آزاد است. پیچیده می شود و به ناچار کارایی اجرای برنامه را تحت تاثیر قرار می دهد، در نهایت بر کارایی کنترل کننده، زمان بندی و منطق تاثیر می گذارد.

بنابراین، هنگام طراحی کد، مقدار ثابتی از حافظه را به چندین ماژول عملکردی مهم اختصاص دادم، از جمله کش برای ارسال و دریافت داده ها از سرور TCP و مشتری، حافظه پنهان برای تجزیه پروتکل HTTP و حافظه پنهان نوشتن برای بازنویسی. برنامه اسکریپت در فلش

این تخصیص، 96 کیلوبایت به حد نهایی کشیده شده است، پس از توسعه همه توابع، تنها حدود 7 کیلوبایت اندازه پشته باقی مانده است.

در بسیاری از جاها باید زمان را فدای فضای رم کرد.به عنوان مثال، هنگام طراحی عملکرد ارتقاء سیستم عامل از راه دور، با مشکل خواندن و نوشتن حافظه فلش نیاز به تراز 4 بایتی، نه تنها خواندن و نوشتن آدرس و طول داده ها باید تراز 4 بایت باشد و محدودیت های حافظه می تواند فقط با تخصیص حافظه کافی برای جابجایی داده ها برای دستیابی به حافظه 4 بایتی رفع نمی شود، فقط می تواند مستقیماً در سطح بالایی داده ها به عملیات حافظه داده منتقل شود و آدرس حافظه داده 4 بایت تراز نیست. ، مستقیماً به عملکرد spi_flash_read/spi_flash_write منتقل می شود، سپس استثنای تراز داده ها را با کد خطای 9 پرتاب می کند و راه اندازی مجدد می شود.

در پایان، من فقط می توانم کدهای اضافی را اضافه کنم تا آدرس و طول داده را به 4 بایت برسانم و یک کلمه (4 بایت) را به صورت واحد بخوانم و بنویسم و ​​از سطح بالا بخوانم و بنویسم. واحد بایت

آزمایش واقعی، سرعت خواندن و نوشتن فلش را تحت تأثیر قرار می دهد و در نتیجه زمان بیشتری برای ارتقای سیستم عامل می گیرد.

با این حال، ارتقاء عملکردی است که به ندرت استفاده می شود، زمان کمی طولانی تر قابل قبول است، ثبات هنوز مهم ترین است.

با استفاده از ESP8266 برای طراحی کنترلر برای برنامه نویسی اسکریپت، فکر می کنم فضای رم ESP8266 تنها 96 کیلوبایت است، اگر برنامه از طریق تخصیص حافظه پویا، حافظه را اشغال کند، روی راندمان اجرا و قابلیت اطمینان برنامه تأثیر می گذارد.

کنترلر دارای عملکردهای فراوان و کدهای پیچیده است، کنترل تخصیص و انتشار حافظه دشوار است، همچنین اطمینان از عدم تخصیص حافظه مشکل است، در این زمان، کنترل استثنا و انتظار برای حافظه آزاد است. پیچیده می شود و به ناچار کارایی اجرای برنامه را تحت تاثیر قرار می دهد، در نهایت بر کارایی کنترل کننده، زمان بندی و منطق تاثیر می گذارد.

بنابراین، هنگام طراحی کد، مقدار ثابتی از حافظه را به چندین ماژول عملکردی مهم اختصاص دادم، از جمله کش برای ارسال و دریافت داده ها از سرور TCP و مشتری، حافظه پنهان برای تجزیه پروتکل HTTP و حافظه پنهان نوشتن برای بازنویسی. برنامه اسکریپت در فلش

این تخصیص، 96 کیلوبایت به حد نهایی کشیده شده است، پس از توسعه همه توابع، تنها حدود 7 کیلوبایت اندازه پشته باقی مانده است.

در بسیاری از جاها باید زمان را فدای فضای رم کرد.
به عنوان مثال، هنگام طراحی عملکرد ارتقاء سیستم عامل از راه دور، با مشکل خواندن و نوشتن حافظه فلش نیاز به تراز 4 بایتی، نه تنها خواندن و نوشتن آدرس و طول داده ها باید تراز 4 بایت باشد و محدودیت های حافظه می تواند فقط با تخصیص حافظه کافی برای جابجایی داده ها برای دستیابی به حافظه 4 بایتی رفع نمی شود، فقط می تواند مستقیماً در سطح بالایی داده ها به عملیات حافظه داده منتقل شود و آدرس حافظه داده 4 بایت تراز نیست. ، مستقیماً به عملکرد spi_flash_read/spi_flash_write منتقل می شود، سپس استثنای تراز داده ها را با کد خطای 9 پرتاب می کند و راه اندازی مجدد می شود.

در پایان، من فقط می توانم کدهای اضافی را اضافه کنم تا آدرس و طول داده را به 4 بایت برسانم و یک کلمه (4 بایت) را به صورت واحد بخوانم و بنویسم و ​​از سطح بالا بخوانم و بنویسم. واحد بایت

آزمایش واقعی، سرعت خواندن و نوشتن فلش را تحت تأثیر قرار می دهد و در نتیجه زمان بیشتری برای ارتقای سیستم عامل می گیرد.

با این حال، ارتقاء عملکردی است که به ندرت استفاده می شود، زمان کمی طولانی تر قابل قبول است، ثبات هنوز مهم ترین است.

توضیحات تصویر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا