زمانی که واژه سیستم عامل به گوش میرسد، ناخودآگاه به سیستم عامل هایی مانند ویندوز، لینوکس، اندروید، IOS و … فکر میکنیم. اما سیستم عامل ها فقط برای کامپیوتر ها و یا موبایل ها نیست. تقریبا ۹۰ درصد سیستم های دیجیتال دارای سیستم عامل هستند. میکروکنترلرها نیز از این از این قاعده مستثنی نیستند و سیستم عامل های مختلفی برای میکروکنترلرها موجود است. در این آموزش قصد داریم تا درباره سیستم عامل RTOS صحبت کنیم. در ادامه با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.
تعریف سیستم عامل
سیستم عامل، یک نرم افزار جامع جهت تعامل کاربر با سخت افزار به شمار می رود. در حقیقت، سیستم عامل را می توان به عنوان رابطی بین کاربر و درخواست های وی از سخت افزار، به شمار آورد. برنامه های مختلف با نصب و قرارگیری بر روی سیستم عامل، در خواست های خود نظیر استفاده از حافظه رم، استفاده از حافظه دیسک، استفاده از شبکه و … را به سیستم عامل می دهند. سیستم عامل نیز پس از دریافت درخواست، به اجرای آن می پردازد.
بنابراین، به کمک سیستم عامل، می توانیم به سادگی و بدون درگیر شدن با جزییات سخت افزاری، برنامه های خود را بر روی سیستم مورد نظر اجرا کنیم. در حقیقت سیستم عامل، نقش مدیریت منابع را بر عهده دارد. برنامه های مختلف حین اجرا، نیازمند دسترسی به سخت افزارهای مختلف هستند. سیستم عامل با مدیریت منابع سخت افزاری، سخت افزار مورد نیاز را در اختیار برنامه قرار داده و بدین ترتیب اجازه اجرای برنامه مورد نظر صادر می گردد.
برای کسب اطلاعات بیشتر درباره سیستم عامل ها میتوانید آموزش تعریف ساده سیستم عامل امبدد و کاربرد آن در بردهای الکترونیکی را مطالعه کنید.
Super Loop یا RTOS ؟
روش برنامه نویسی معمول که تمامی دستورات در یک حلقه بی نهایت قرار میگیرند، اصطلاحا Super Loop مینامند. این روش برای بسیاری از کدهای ساده پاسخگو است. اما در کد های پیچیده، مواقعی پیش می آید که نیاز است پردازنده بصورت همزمان چند کار را انجام دهد، و بخش هایی مانند تایمر و اینتراپت هم کمکی نکند. در این مواقع روش معرفی شده دیگر پاسخگو نخواهد بود. راه حل رفع این محدودیت استفاده از سیستم عامل RTOS است. در کد زیر یک نمونه برنامه با روش Super Loop را مشاهده میکنید.
Function Main_Function() { Initialization(); Do_Forever { Check_Status(); Do_Calculations(); Output_Response(); } }
واژه RTOS مخفف Real Time Operating System به معنای سیستم عامل بی درنگ است. در واقع با استفاده از این سیستم عامل بر روی میکروکنترلر خود شما میتوانید برنامه خود را به Task (وظیفه) های مختلف تقسیم کنید. در واقع RTOS یک مولفه نرم افزاری است که باعث میشود، پردازنده با سرعت بسیار بین Task ها جابجا شود. هر Task در داخل خود یک حلقه بی نهایت دارد و Task ها تقریبا بصورت همزمان با یکدیگر اجرا میشوند. همچنین شما میتوانید با استفاده از این سیستم عامل برای هر Task اولویت انتخاب کنید. به این صورت که اگر Task دارای الویت بالاتر سر برسد. سیستم عامل ابتدا وظیفه دارای الویت را انجام میدهد و سپس به ادامه وظایف میپردازد.
Multitasking
در سیستم عامل RTOS با استفاده از دو بخش Kernel و Scheduler عملکردی که در بالا توضیح داده شد را ایجاد میکند. به این صورت که به هر Task زمان بسیار کوتاهی اختصاص داده میشود. در صورتی که سیستم عامل در حال اجرای یک Task باشد و یک Task با اولویت بالا تر سر برسد. سیستم عامل Task را در نقطه ای که هست رها میکند و به سراغ Task با اولویت بالا تر میرود. تا زمانی که دوباره نوبت به Task قبلی برسد. سپس سیستم عامل Task را از نقطه رها شده ادامه میدهد. به این قابلیت اصطلاحا چند وظیفهگی یا Multitasking گفته میشود.
چرا باید از RTOS استفاده کنیم؟
فرض کنید بایستی مداری طراحی کنید که برای محافظت از جان انسان بر روی دستگاه صنعتی قرار میگیرد. برای مثال دستگاه برشی را در نظر بگیرید. شما بایستی مداری طراحی کنید. که با تشخیص دست انسان سریعا دستگاه را متوقف کند. و تیغه دستگاه را نگه دارد. در چنین سیستمی حتی چند لحظه تاخیر میتواند خسارت های جبران ناپذیری به بار آورد. ضرورت بلادرنگ (Real Time) بودن یک سیستم در چنین مواقعی مشخص میشود. از جمله کاربرد های دیگر RTOS میتوان به سیستم کیسه هوای ماشین اشاره نمود. که بسیار مهم است که به موقع عمل کند. از دیگر مزایای RTOS میتوان به موارد زیر اشاره نمود.
- قابلیت زمان بندی بر اساس اولویت یک ابزار بسیار قدرتنمد است که به پردازنده این اجازه میدهد وظایف مهم را سریع تر از وظایف غیر مهم انجام دهد.
- استفاده از RTOS باعث میشود. کدنویسی بصورت ماژولار انجام شود. بنابراین توسعه و استفاده مجدد کد در آینده بسیار ساده تر خواهد بود.
- بهره وری بهبود سیستم بسیار بهبود میابد.
- و …
freeRTOS چیست؟
freeRTOS یک کلاس از RTOS است که بسیار کوچک طراحی شده است که به راحتی بر روی میکروکنترلرها اجرا شود. میکرکنترلرها به دلیل داشتن قدرت پردازشی و حافظه محدودی که دارند. به ندرت ممکن است از اجرای کامل RTOS پشتیبانی کنند. بنابراین FreeRTOS تنها قابلیت برنامه ریزی زمان واقعی هسته ، ارتباطات بین کار و زمان بندی را فراهم می کند.
چنانچه هر قسمت از این مقاله را متوجه نشدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی از وبسایت دیجی اسپارک حمایت کنید.
سلام
این سیستم عامل را روی چ میکروهایی میتوانیم نصب کنیم ؟
با سلام
سیستم عامل FreeRTOS بر روی میکروکنترلر های مختلفی استفاده میشود. در آموزش های آینده نحوه استفاده از این سیستم عامل بر روی میکروکنترلر های Stm32 را آموزش خواهیم داد.
سلام.
این آموزش آماده نشده است؟ من هم دوست دارم یک مثال واقعی از سیستم عامل که روی یک میکرو البته ترجیحا AVR نصب شده و یک کار مشخص با خروجی واقعی رو انجام میده هر چند ساده ببینم. و البته این مقدمه خیلی خوب بود ولی مفهوم اجرایی اون با یک مثال واقعی کامل میشه.
لطفا آموزش با مثال واقعی تون رو آماده کنید.
با تشکر
سلام ایا ecu خودر از سیستم عامل بدون درنگ استفاده میکنه اگه نه چطور کار میکنه
با سلام
متاسفانه بنده با عملکر رسیستم کامپیوتر خودرو ها آشنایی ندارم.
سلام وقت بخیر
در صورتی که freeRTOS را بر روی رزبری پای نصب کنیم، امکان راه اندازی ماژول esp8266 (همچون رزبرین) بر روی آن وجود دارد؟
با سلام
برای این موضوع بایستی دیتاشیت پردازنده مورد نظر بررسی شود. اما تا انجایی که بنده اطلاع دارم خیر این امکان وجود ندارد چوس سیستم عامل هایی مثلا رزبین بلادرنگ نیستند.